假设我有一个文件夹,里面有数千张照片,这些照片的命名都是随机的。如何从命令行/终端将它们重命名为 photo1、photo2、...、photo1000?
答案1
我假设您想在文件名上保留适当的后缀:
c=1; for f in *.jpg ; do mv "$f" "photo$c.jpg" ; c=$(($c+1)) ; done
笔记
c=1
:这将初始化计数器。您可以将其设置为任意数字。for f in *.jpg ; do
:这表示 shell 循环的开始for
。虽然当文件名可能包含空格、换行符或其他难处理的字符时,许多 shell 脚本可能难以运行,但这种构造即使是对付最棘手的文件名也是安全的。mv "$f" "photo$c.jpg"
:这将使用计数器c
并执行文件的实际重命名。文件名$f
用双引号引起来,以防止名称受到各种可能的 shell 扩展的影响。c=$(($c+1))
:这将增加下一个循环的计数器done
:表示循环结束for
。
答案2
您可以使用此代码:
for i in *.jpg; do let j+=1 ; mv "$i" "photo$j.jpg" ; done