• 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;
    

    持续更新……

  • 相关阅读:
    pl/sql可以封装代码的结构(过程,函数, 包)
    pl/sql 块结构
    Oracle 逻辑模型(数据库,用户的关系)
    Oracle 创建用户为什么要加C##
    CentOS8断电后无法正常启动
    Cannot open /var/log/sa/sa26: No such file or directory
    Centos6.6安装sysstat报错/etc/cron.d
    Oracle DBCA工具检测不到ASM磁盘组
    Redis安装
    Mysql模拟故障恢复案例过程
  • 原文地址:https://www.cnblogs.com/plwang1990/p/3758565.html
Copyright © 2020-2023  润新知