我试图找到所有出现的具有指定字符串的文件,然后清除所有这些文件的内容。因此,其中包含“stringtofind”的文件随后将是一个空文件。

为此,我尝试了以下操作,但出现错误:

出现以下错误: find: missing argument to `-exec'

 find / -maxdepth 1 -xdev -type f -exec grep -i "stringtofind" -l -exec sed -i '/./d'

使用以下我得到错误:

grep:/nis

/tset.any

/test2.file

/测试.txt

: 没有相应的文件和目录
sed:没有输入文件
find / -maxdepth 1 -xdev -type f -print | xargs -0 grep -i "stringtofind" -l | xargs sed -i '/./d'

最佳答案

缺少参数的 find 命令非常接近工作。尝试:

find / -maxdepth 1 -xdev -type f -exec grep -i "stringtofind" -l {} \; -exec sed -i '/./d' {} \;

您只需要在每个 -exec 操作的末尾添加一个反斜杠转义分号,并添加 {} 以让它知道在哪里替换文件名。

关于linux - 一起使用 find、grep 和 sed,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13838973/

10-11 23:16
查看更多