假设给定目录中有许多文件具有各种文件扩展名或根本没有扩展名,只有文件名。其中一些文件包含字符串“\/for\/endetta
”。
如何找到并删除该目录中与此模式匹配的所有文件?我可以通过以下方式做到这一点:
find -type f -exec egrep -Il '\/for\/endetta' {} \;|xargs rm -fv
但是没有 xargs 可以做到吗?
以及如何正确转义\s 和/s 等。
最佳答案
BrowSlow 的回答(在评论中)是正确的,除了/for/endetta 的转义。 试试这个命令:
find . -type f -exec grep -q '\\/for\\/endetta' {} \; -delete
如果 grep 的退出状态为真,则执行以下操作。将 -delete 替换为 -print 以查看将删除哪些文件。
关于design-patterns - Bash - 如何查找和删除包含给定字符串的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25512928/