当 grep 在文件夹内找不到匹配的文件时删除整个文件夹

当 grep 在文件夹内找不到匹配的文件时删除整个文件夹

我有数千个文件夹,html每个文件夹中都有一个文件。如果 grepexample.com在文件中找不到匹配项,我想删除整个文件夹html

我知道如何删除不匹配的文件。例如像这样:

grep -ZrLIi "example.com" "/dir/htmls/" | xargs -0 -I {} rm -f --

但不是删除文件本身。如何删除文件所在的整个文件夹,包括其中的其他文件?

答案1

这假设您有 GNU coreutils,因为您在 grep 中使用非 POSIX 标志:

grep -ZrLIiF "example.com" /dir/htmls | xargs -0 dirname -z | sort -zu | xargs -0 echo rm -rf

如果输出看起来正确,请删除echo前面的内容。rm我还添加了-F进行文字匹配的选项,而不是正则表达式匹配。

相关内容