Bash - 如何查找并删除包含给定字符串的所有文件?

Sam*_*i88 4 grep design-patterns find xargs

假设给定目录中有许多文件,这些文件具有不同的文件扩展名或根本没有扩展名,只有文件名。其中一些文件包含字符串“ \/for\/endetta”。

如何查找并删除该目录中与此模式匹配的所有文件?我可以通过使用以下方法来做到这一点:

find -type f -exec egrep -Il '\/for\/endetta' {} \;|xargs rm -fv
Run Code Online (Sandbox Code Playgroud)
  1. 但是没有 xargs 是否可以做到这一点?

  2. 以及如何正确转义 \s 和 /s 等。

ant*_*iob 5

BrowSlow 的答案(在评论中)是正确的,除了 /for/endetta 的转义之外。尝试这个命令:

find . -type f -exec grep -q '\\/for\\/endetta' {} \; -delete 
Run Code Online (Sandbox Code Playgroud)

如果 grep 的退出状态为 true,则执行以下操作。将 -delete 替换为 -print 以查看将删除哪些文件。