簡體   English   中英

刪除不包含媒體文件的目錄

[英]remove directories that do not contain media files

我正在嘗試制作一個腳本來刪除不包含媒體文件的文件夾。 下面的代碼有效,但也會刪除空目錄,媒體可能位於該空文件夾的子目錄中,所以我不想刪除它。

find /mnt/movies -type d '!' -exec /bin/sh -c 'ls -1 "{}"|egrep -i -q "^*\.(avi|mp4|mkv|srt)$"' ';' -exec /bin/rm -rv {} +

例子:

tree /mnt/movies/
/mnt/movies/
├── test1
│   └── 1.mp4
└── test2
    └── random.txt
find /mnt/movies -type d '!' -exec /bin/sh -c 'ls -1 "{}"|egrep -i -q "^*\.(avi|mp4|mkv|srt)$"' ';' -print
/mnt/movies
/mnt/movies/test2

上面會刪除/mnt/movies所以會刪除所有內容。

首先,擦除您不再需要的所有文件

 find /mnt/movies -type f ! -name '*.mp4' ! -name '*.avi' ! -name '*.mkv' -exec rm -v {} \;

剩下一些空目錄和一些包含媒體文件的目錄。 現在,假裝刪除所有目錄:

find /mnt/movies -type d -exec rmdir --ignore-fail-on-non-empty -v {} \;

這將跳過非空目錄,即有媒體文件。

如果您沒有 Gnu rmdir(例如,因為您在 Mac 上),請使用 rmdir 不帶任何選項,但重定向2>/dev/null ,以避免有關非空目錄的錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM