Shell

刪除包含某個文件的目錄

  • January 26, 2017

我想找到包含某個文件的所有目錄,然後刪除這些目錄。和

find . -name thatcertainfile -execdir pwd \;

我得到了我想要刪除的所有目錄的列表,但是我怎樣才能即時刪除所有這些目錄呢?請注意,我想刪除整個目錄,而不僅僅是文件本身,我可以在其中使用

find . -name thatcertainfile -exec rm -r {} \;

試試這個命令:

rm -rf $(find . -name thatcertainfile -execdir pwd \;)

它應該rm -rf告訴你它必須刪除的是你的命令的輸出。例如,如果您的命令輸出是/home/guest/Documents我顯示的命令,則將在rm -rf /home/guest/Documents.

給定文件的路徑./some/where/thatcertainfile,去掉最後/thatcertainfile的路徑會給你一個目錄的路徑。啟動一個 shell 以便能夠在路徑上使用字元串操作。

find . -name thatcertainfile -exec sh -c 'rm -r "${0%/*}"' {} \;

或者,使用 zsh。要將路徑轉換為包含目錄的名稱,請通過glob 限定符使用:h history 修飾符

rm -rf **/thatcertainfile(N:h)

(顯然,在執行它之前先測試它rm!)

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