
如何使用 bash 刪除不包含名為 wav 或 mp3 的目錄的目錄?我使用 macOS Sierra。
find . -type d \! -exec test -e '{}/wav' \; -print
尋找不包含 wav 目錄的目錄。如何將 mp3 包含到此命令中?我怎麼刪除生成的目錄?
我的音樂庫遵循以下結構:
/Musik/<Artist>/<format>/<Artist---Album>/<Track_Titel.wav>
,其中格式為 wav 或 mp3。有許多目錄沒有任何音訊檔案但覆蓋,例如因此我不能只搜尋空目錄來刪除那些不包含音訊檔案的目錄。
答案1
首先,在你這樣做之前,備份您的檔案。
嚴重地。
尋找並刪除不直接包含目錄的 Artist 目錄(及其內容,遞歸地)(或者文件)標題為wav
或mp3
(案例敏感的),請嘗試以下操作:
find /Musik -mindepth 1 -maxdepth 1 -exec test \! -e {}/wav \; -exec test \! -e {}/mp3 \; -print
只有在你擁有之後確認輸出符合您希望刪除的目錄(並仔細檢查你的備份)然後你應該運行:
find /Musik -mindepth 1 -maxdepth 1 -exec test \! -e {}/wav \; -exec test \! -e {}/mp3 \; -exec rm -rf {} \;
答案2
對於 2 個測試,運行測試兩次,如果兩者都失敗,則執行以下操作:
find . -type d -exec bash -c "test -f \"{}\"/*wav || test -f \"{}\"/*mp3 || test -d \"{}\"/* || rm -rf \"{}\"" \;