繁体   English   中英

重命名Shell脚本中的文件以进行循环

[英]Renaming files in Shell script for loop

我运行OS X并有多张照片,并开始将它们命名为xyz-100.jpgxyz-101.jpgxyz-102.jpgxyz-402.jpg ,现在想通过将数字减少99来重命名它们,使其成为xyz-1.jpgxyz-2.jpgxyz-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 barln 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM