我运行OS X并拥有多张照片,并开始将它们命名为xyz-100.jpg
,xyz-101.jpg
,xyz-102.jpg
,最多为xyz-402.jpg
,现在想要通过基本减少数量来重命名它们到99,将xyz-1.jpg
,xyz-2.jpg
提升到xyz-303.jpg
。
我知道我可以使用mv
命令,但我似乎无法在文件名中实现变量,例如xyz-$reduced.jpg
。我该怎么做呢?
答案 0 :(得分:1)
这样的事情应该有效。但我不确定你是如何获得文件数量的。您还可以将列出文件名的另一个文件的输出捕获到与此相同的效果。但这应该让你开始
num_array=(1 2 3 4 5)
for i in "${!num_array[@]}"; do
mv -i ./"myfile_${i}.jpg" /somehwere_else
done
答案 1 :(得分:1)
我强烈建议您将它们移动到另一个目录,否则如果在中途发生不良事件,您将面临混淆的风险。所以试试:
mkdir tmp
for ((n=100; n<=402; n++)); do
ln xyz-$n.jpg tmp/xyz-$((n-99)).jpg
done
这应该会在tmp/
内为您提供所需的文件。然后,您可以将该目录移动到您喜欢的位置并删除旧文件。如果您不熟悉ln
,请将其视为mv
的一半。基本上mv foo bar
与ln foo bar; rm foo
相同。通过链接子目录中新命名的文件,您不会发现任何冲突,试图确定文件150是否真的是150或者是否重命名为249.此外,不是迭代现有文件并尝试解析数字,只需使用jot
生成您想要的名称。