[英]Renaming files in Shell script for loop
我运行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
。 我该怎么做呢?
这样的事情应该起作用。 但我不确定您如何获取文件数量。 您也可以列出另一个列出文件名的文件,以达到与此相同的效果。 但这应该可以帮助您入门
num_array=(1 2 3 4 5)
for i in "${!num_array[@]}"; do
mv -i ./"myfile_${i}.jpg" /somehwere_else
done
我强烈建议您将它们移动到另一个目录,因为否则在中途发生一些不良情况时,您可能会感到困惑。 因此,请尝试:
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
相同ln foo bar; rm foo
ln foo bar; rm foo
。 通过将新命名的文件链接到子目录中,您将不会遇到任何冲突,从而可以弄清文件150是150还是重命名为249。此外,不要遍历现有文件并尝试解析数字,只需使用jot
生成您想要的名称即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.