我正在尝试按顺序重命名一组 Tiff 图像 001、001 x、002、002 x。我正在寻找脚本来命名图像 001、002、003 等
这是我正在运行的脚本。
num=1
# Rename files 3 number
for file in *.tif; do
mv -v "$file" "$(printf "%03d" $num).tif"
let num=$num+1
done
当我运行脚本时,我得到文件 001、004、005,这些文件似乎已被删除。001x'.tif -> 002.tif 002.tif -> 003.tif,当查看文件时,我看不到文件 002、003。
我需要做什么才能让我的脚本重命名所有文件?
答案1
看起来你“站在你正在修改的东西上“……”
例如,*.tif
扩展为001.tif 001x.tif 002.tif 002x.tif
,然后循环遍历并重命名它们,如下所示:
001.tif
→001.tif
001x.tif
→002.tif
(替换002.tif
)002.tif
→003.tif
(最初001x.tif
,现在003.tif
)002x.tif
→004.tif
- ETC...
解决此问题的最好和最简单的方法是使用两个目录,例如从中获取文件./in/
并将其重命名/移动到./out/
:
num=1
for file in ./in/*.tif; do
mv -v "${file}" "./out/$(printf "%03d" ${num}).tif"
num=$(( ${num} + 1 ))
done
这样您就完全避免了上面概述的问题。
如果您不能或不想使用两个目录,那么问题就会立即变得更加复杂 - 您可能需要解决输入和输出之间的各种命名冲突,并且执行操作的顺序对于避免数据丢失至关重要。我不会尝试在 Bash 脚本中执行此操作......
答案2
我得到了这份工作
cd $path num=1 for file in *.tif; do mv -v "${file}" "$path/$(printf "%03d" ${num}).tif" num=$(( ${num} + 1 )) done
如何在文件名末尾添加后缀“x”?