![如何在 Bash 脚本中重命名多个文件?](https://linux22.com/image/134207/%E5%A6%82%E4%BD%95%E5%9C%A8%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E9%87%8D%E5%91%BD%E5%90%8D%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%EF%BC%9F%20.png)
假设我想重命名同一目录中的 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