grep -n magenta *| rm *
grep: a.txt
: 没有那个文件或目录
grep: b
: 没有那个文件或目录
以上命令删除目录中除 ., .. 之外的所有文件。 它应该只删除那些包含“洋红色”一词的文件
此外,尝试了 grep magenta * -exec rm '{}'\;
但没有成功。
任何想法?
最佳答案
使用xargs
:
grep -l --null magenta ./* | xargs -0 rm
xargs 的目的是在 stdin 上获取输入并将其放在其参数的命令行上。
选项的作用:
-l
选项告诉 grep 不打印匹配的文本,而是只打印包含匹配文本的文件的名称。--null
选项告诉 grep 用 NUL 字符分隔文件名。这允许安全地处理各种文件名。xargs 的
-0
选项将其输入视为 NUL 分隔。
关于bash - 如何使用 grep 和 rm 删除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31779632/