如何使用grep和rm删除文件?

PRK*_*PRK 10 unix bash grep

grep -n magenta *| rm *
Run Code Online (Sandbox Code Playgroud)

grep: a.txt: 没有相应的文件和目录

grep: b: 没有相应的文件和目录

上面的命令删除目录中存在的除.,..之外的所有文件.它应该只删除那些包含"magenta"一词的文件

还试过grep magenta * -exec rm '{}' \;但没有运气.任何的想法?

Joh*_*024 17

用途xargs:

grep -l --null magenta ./* | xargs -0 rm
Run Code Online (Sandbox Code Playgroud)

xargs的目的是在stdin上获取输入并将其放在其参数的命令行上.

选项的作用如下:

  • -l选项告诉grep不要打印匹配的文本,而只是打印包含匹配文本的文件的名称.

  • --null选项告诉grep将文件名与NUL字符分开.这样可以安全地处理文件名的所有庄园.

  • -0选项xargs的对待其输入为NUL分隔.