有问题的代码:
ls | cat -n | while read n f; do mv "$f" `printf "video_%03d.mp4" $n`; done
上面的代码将执行目录中的所有文件/文件夹重命名为:
video_001.mp4
video_002.mp4
video_003.mp4
and so on...
但是,最好仅针对特定类型的文件,例如仅重命名文件.mp4
,而不是重命名所有内容(包括目录)。
答案1
这将重命名所有.mp4
文件,而不进行解析ls
:
i=1; for file in *.mp4; do mv "$file" $(printf "video_%03d.mp4" "$i"); i=$((i + 1)); done
语句中可以使用任何 glob for file in ...
。您可以通过使用来应用其他标准find
。