我试图制作一个脚本来删除不包含媒体文件的文件夹。下面的代码有效,但也删除了空目录,并且媒体可能位于该空文件夹的子目录中,所以我不想删除它。
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
,因此将删除所有内容。
答案 0 :(得分:0)
首先,清除所有不再需要的文件
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
,以避免有关非空目录的错误消息。