查找并删除不包含某些文件类型的所有目录

时间:2016-08-07 02:57:12

标签: linux bash find

这是我到目前为止所做的,它有效,但它会引发错误,我不确定原因:

$ find . -mindepth 1 -type d '!' -exec sh -c 'ls -1 "{}" | egrep -i -q "\.(mp4|avi|mkv)"' \; -print -exec rm -r {} \;
./test
find: `./test': No such file or directory

2 个答案:

答案 0 :(得分:0)

尝试此命令 find . -mindepth 1 -type f | egrep -v "\.(mp4|avi|mkv)$" | xargs rm -i

答案 1 :(得分:0)

这是我最终使用的:

find . -mindepth 1 -type d '!' -exec sh -c 'ls -1 "{}" | egrep -i -q "\.(mp4|avi|mkv)"' \; -print | while read line;do rm -r $line;done

如果没有与正则表达式匹配的目录,我想要一个没有抛出错误的单行内容。