如何修改这个`while read; mv printf` 代码仅重命名特定文件类型的文件?

如何修改这个`while read; mv printf` 代码仅重命名特定文件类型的文件?

有问题的代码:

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

相关内容