Command-Line

刪除一系列子目錄中的某些文件

  • January 7, 2018

我有一個目錄,裡面有幾個子目錄。每個子目錄中都有幾個文件。我想刪除子目錄中的所有文件,除了 .pdf 文件。並且不理會子目錄。我用了

find . -type f ! -iname "*.pdf" -delete

但我必須在子目錄中才能使其工作。我也想遞歸地做。

在 bash 中,刪除目前所有子目錄中的所有非 pdf 文件:

shopt -s extglob
rm */!(*.pdf)

初始*/匹配每個子目錄,而extglob 選項啟用以下!( ... )模式:匹配除括號內的文件*之外的所有文件;*在這種情況下,要排除的模式是*.pdf。如果您可能還有帶有.PDF副檔名的文件,請改用它:

rm */!(*.[pP][dD][fF])

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