Bash-批处理文件重命名
我有一个文件夹,从Picture 002.jpg到Picture 062.jpg的顺序中有61个jpg,我想删除“Picture”,并按照当前的顺序正确地将文件01重命名为61。如何在bash脚本中实现这一点Bash-批处理文件重命名,bash,Bash,我有一个文件夹,从Picture 002.jpg到Picture 062.jpg的顺序中有61个jpg,我想删除“Picture”,并按照当前的顺序正确地将文件01重命名为61。如何在bash脚本中实现这一点 #!/bin/bash x=1 for f in * do if [ "$f" != "change_name.sh" ]; then new_name=`printf "%02d.jpg" $x` mv -v "$f" $new_name
#!/bin/bash
x=1
for f in *
do
if [ "$f" != "change_name.sh" ]; then
new_name=`printf "%02d.jpg" $x`
mv -v "$f" $new_name
x=$((x+1))
fi
done
用法:将脚本另存为图像的同一目录中的change_name.sh
,然后运行
在运行此脚本之前,您可以ls
您的目录。如果文件名顺序正确,就可以了。或者您可以在for
循环ls | sort
中更改ls
希望这能有所帮助。用<代码>表示f in$(ls)是不好的做法,你应该用<代码>表示f in*@dbaupp你能解释一下吗?为了效率?谢谢。效率(
*
不会产生任何额外的过程)和正确性(如果文件名中有空格或换行符,则使用ls
将中断)。@dbaupp谢谢。更新脚本。:)运行此命令时,我得到mv:target'01.jpg'不是目录mv:target'11.jpg'不是目录mv:target'111.jpg'不是目录mv:target'1111.jpg'不是目录mv:target'11111.jpg'不是目录mv:target'111111.jpg'不是目录mv:target'1111111.jpg'不是目录mv:target'11111111.jpg'不是目录mv:目标'111111111.jpg'不是目录等。