使用 MV 脚本重命名图像文件

使用 MV 脚本重命名图像文件

我正在尝试按顺序重命名一组 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.tif001.tif
  • 001x.tif002.tif(替换002.tif
  • 002.tif003.tif(最初001x.tif,现在003.tif
  • 002x.tif004.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”?

相关内容