Bash

如何在閱讀時修改此內容;mv printf`程式碼僅重命名某些文件類型的文件?

  • May 17, 2019

有問題的程式碼:

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文件,而不是重命名包括目錄在內的所有內容。

這將重命名所有.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

引用自:https://unix.stackexchange.com/questions/519459