我需要一次重命名 3028 个文件的名称。你有什么帮助吗?
0001____z1.0.tif --> 0001.tif
0002____z2.0.tif --> 0002.tif
.
.
.
3028____z3028.0.tif --> 3028.tif
我可以____z2.0.tif
使用 Linux 的“重命名”选项一次重命名“”所有文件吗?或者其他方式....?如果您有任何想法,请告诉我。那就感激不尽了...
答案1
使用 perlrename
或prename
:
rename 's/_.*/.tif/' *.tif
答案2
尽管已经有了答案,但我相信只用 shell 就可以完成这个任务。
重击:
大括号之间的表达式称为大括号扩展。
for fn in {1..3028}; do
mv "$(printf "%04d\n" "${i}")____z${i}.0.tif" "${i}.tif"
done
POSIX:
i=0
while [ "${i}" -le 3028 ]; do
mv "$(printf "%04d\n" "${i}")____z${i}.0.tif" "${i}.tif"
i=$((i + i))
done
您可能需要更改到文件所在的目录或将其路径名添加到命令的参数中mv
。例如,如果文件位于/tmp
:
mv "/tmp/$(printf "%04d\n" "${i}")____z${i}.0.tif" "/tmp/${i}.tif"