Bash

為沒有副檔名的文件添加文件副檔名

  • May 2, 2020

我在各種不同的子目錄中有數百個文件。其中一些具有正確的文件副檔名,但其中一些沒有。我想重命名所有沒有文件副檔名的文件,並將 .mp4 副檔名附加到它們的文件名中。其他文件應保持不變。如何使用 Bash 自動執行此重命名操作?或者我需要像 Perl 或 Python 這樣的真正的腳本語言嗎?

像這樣的東西:

find . -type f  ! -name "*.*" -exec mv {} {}.mp4 \;

試試這個:

find -type f -not -name '*.mp4' -exec rename -n 's/$/.mp4/' {} +

這將檢查目前目錄中的所有文件及其不以結尾的子文件夾.mp4並重命名它們以添加副檔名

假設perl基於rename命令,-n選項是顯示文件將如何重命名。一旦你沒問題,刪除該選項並再次執行該命令

例子:

$ find -type f
./rand_numbers.txt
./tst
./abc/123
./abc/zyx.txt

$ find -type f -not -name '*.mp4' -exec rename -n 's/$/.mp4/' {} +
rename(./rand_numbers.txt, ./rand_numbers.txt.mp4)
rename(./tst, ./tst.mp4)
rename(./abc/123, ./abc/123.mp4)
rename(./abc/zyx.txt, ./abc/zyx.txt.mp4)

如果您將沒有副檔名的文件定義為沒有名稱.的文件名,請使用:

$ find -type f -not -name '*.*' -exec rename -n 's/$/.mp4/' {} +
rename(./tst, ./tst.mp4)
rename(./abc/123, ./abc/123.mp4)

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