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`,也就是修改后缀名