Shell
刪除包含某個文件的目錄
我想找到包含某個文件的所有目錄,然後刪除這些目錄。和
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
!)