我试图找到所有出现的具有指定字符串的文件,然后清除所有这些文件的内容。因此,其中包含“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/