zoukankan      html  css  js  c++  java
  • Linux 递归修改后缀名

    1 修改命令

    需要用到:

    • find
    • awk
    • xargs

    递归修改命令如下:

    find . -name '*.XXX' | awk -F "." '{print $2}' | xargs -i -t mv ./{}.XXX ./{}.XXXX
    

    XXX后缀修改为XXXX

    2 find

    find用来在指定目录下查找文件,位于参数之前的字符串都被视为需要查找的目录。
    find . -name '*.XXX'中:

    • .表示当前文件夹
    • -name表示文件名符合name的文件,有一个类似的-iname会忽略大小写
    • *.XXX表示寻找所有的XXX后缀的文件

    其他常用例子:

    • find . -type f:递归列出一般文件
    • find . -ctime -20:递归列出最近20天内更新过的文件
    • find /var/log -type f -mtime +7 -ok rm {} ; :查找/var/log下更新时间在7日以前的普通文件,并在删除之前询问
    • find . -type f -perm 644 -exec ls -l {} ;:查找当前目录下权限为644的文件
    • find / -type f -size 0 -exec ls -l {} ;:查找/下文件大小为0的普通文件并列出完整路径

    3 awk

    awk是一种处理文本文件的语言,是一个强大的分析工具。
    awk -F "." '{print $2}'中:

    • -F指定输入文件拆分分隔符,因为需要修改后缀名,后缀名与主文件名由.分隔,因此后面加上"."参数
    • '{print $2}'print表示打印,$在awk中表示字段引用,这里$2表示引用第二个字段,字段根据前面的-F参数进行分隔。
    • 因为find打印出来的是./a/b/c.XXX,因此print $2会打印其中第二个字段,就是路径/a/b/c,而print $1为空(因为第一个.之前没有其他内容),print $3为后缀名

    4 xargs

    xargs是给命令传递参数的一个过滤器,可以将管道或者标准输入数据转换为命令行参数,默认的命令为echo。使用xargs可以对不支持管道的命令添加类似管道的功能,比如:

    find . -name '*.jpg' | ls -l 
    # 错误,但是能执行,执行的结果仅仅是ls -l的结果
    
    find . -name '*.jpg' | xargs ls -l 
    # 正确
    

    xargs -i -t mv ./{}.XXX ./{}.XXXX中:

    • -i表示将xargs的每项名称,一般是一行一行赋值给后面的{}
    • -t可选,表示先打印需要执行的命令(这里是先打印mv)再执行
    • mv:重命名
    • {}:配合-i使用,这里的{}表示前一步awk中的路径名,对每一个路径都执行一次mv,也就是修改后缀名
  • 相关阅读:
    iOS 面试题 1
    ios 面试题 0
    得到程序包路径
    UISwitch 监听响应
    在[self addsubView:xxx]中,self.name 和 _name的区别
    /调整button的title的位置
    //设置导航条背景图片
    警告框
    @synthesize
    打开控制台选中路径的文件夹
  • 原文地址:https://www.cnblogs.com/6b7b5fc3/p/13237039.html
Copyright © 2011-2022 走看看