假设在给定目录中有许多文件具有各种文件扩展名或根本没有扩展名,只有文件名。其中一些文件包含字符串“ \/for\/endetta
”。
如何查找和删除该模式中匹配此模式的所有文件?我可以通过使用:
来做到这一点find -type f -exec egrep -Il '\/for\/endetta' {} \;|xargs rm -fv
但是没有xargs可以做到吗?
我如何正确地逃避\ s和/ s等
答案 0 :(得分:1)
BrowSlow的答案(在评论中)是正确的,除了/ for / endetta的逃脱。 试试这个命令:
find . -type f -exec grep -q '\\/for\\/endetta' {} \; -delete
如果grep的退出状态为true,则执行以下操作。将-delete替换为-print以查看将删除哪些文件。
答案 1 :(得分:0)
使用递归grep查找所有文件,然后删除它们。像那样:
for file in $( fgrep -l -r '\/for\/endetta' ../ ); do rm "$file"; done
使用fgrep和单引号,您无需转义任何内容。