zoukankan      html  css  js  c++  java
  • Linux shell一行流编程实践

    Linux下很多命令用起来真相当方便,尤其是进行批处理操作时。(话说感觉这种程序也不复杂,windows咋一直不搞一个好用的shell呢)
    这里列出一些实际shell操作的应用场景,具体命令的用法与解释就不列了,网上有很多很好的教程。
    可以当做练习题练练手。


    1. 批量重命名

    当前目录下有若干.wma文件,要把它们批量转成.mp3文件

    例: 001.wma -> 001.mp3

    解决方案:

     # solution 1
     ls * | awk -F '.' '{print "mv "$0" "$1".mp3"}' | bash
     # solution 2
     ls * | perl -e 'while(<>){chomp;$old=$_;s/wma/mp3/;print "mv $old $_
    "}' | bash
     # solution 3
     ls * | perl -e 'while(<>){chomp;$old=$_;s/mp3/wma/;rename $old, $_;}'
    

    2. 查看文件列数

    有一个文件test.txt,每行内容用 分隔,要查看每行有多少列

    解决方案:

    cat test.txt | awk '{print NF}'
    

    3. 读取一个文件并处理其中的每一行

    有一个文件file.txt,每一行记录了一个文件路径,例:
    a.txt
    b.txt
    c.txt
    现在要把这些文件都拷贝到另一个文件夹target中去

    解决方案:

    while read f do; cp $f target/$f;done < file.txt
    

    复杂一点,考虑file.txt中的文件路径如下,例:
    srcdir/a.txt
    srcdir/b.txt
    srcdir/b.txt
    现在要把这些文件都拷贝到另一个文件夹target中去(难点在于文件路径中包含了两级目录,需要先从中提取文件名)

    解决方案:

    while read f do; echo $f | awk -F '/' '{print "cp "$0" target/"$1}' | bash; done < file.txt
    

    4. 批量复制并添加后缀

    有一个文件为file.txt,要把它复制成4份并命名为:file.1.txt, file.2.txt, file.3.txt, file.4.txt

    解决方案:

    #solution 1
    for i in 1 2 3 4;do cp file.txt file.$i.txt;done;
    #solution 2
    for ((i=1;i<=4;++i));do cp file.txt file.$i.txt;done;
    

    持续更新……

  • 相关阅读:
    MATLAB2019a安装
    每日日报6
    HTML表格
    HTML常见表单元素
    HTML特殊符号
    CTF-WEB:攻防世界-bug(综合应用)
    CTF-WEB:文件上传和 webshell
    CTF-WEB:BurpSuite 工具应用
    CTF-WEB:后台扫描与备份泄露
    CTF-WEB:PHP 伪协议
  • 原文地址:https://www.cnblogs.com/plwang1990/p/3758565.html
Copyright © 2011-2022 走看看