如何在 Bash 脚本中重命名多个文件?

如何在 Bash 脚本中重命名多个文件?

假设我想重命名同一目录中的 3 个文件。示例:test1.gzip test2.gzip test3.gzip

现在想将上述所有文件重命名为,

测试1_20180518.gzip 测试2_20180518.gzip 测试3_20180518.gzip

现在怎样才能得到结果呢?有人请帮忙!!

请告诉我,如何在 bash 脚本中做到这一点?

答案1

检查您的“重命名”版本rename -V。如果你看到:

  • util-linux“ 然后

    rename .gzip _$(date "+%Y%m%d").gzip *.gzip
    
  • File::Rename“ 然后

    rename 'chomp(my $date = `date "+%Y%m%d"`); s/\.gzip/_$date.gzip/' *.gzip
    

答案2

可能的解决方案(您需要在循环体中选择一个):

#!/bin/bash

pattern="pattern"
i=0

for file in `find <your_path> -type f -name '*.zip'`
do
    extension="${file##*.}"
    filename="${file%.*}"

    # without extenstion
    mv "$file" "$filename-$pattern.$extension"

    # whole filename
    mv "$file" "$pattern-$i"
    i=$((i + 1))
done

相关内容