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

标签 bash unix grep

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/

相关文章:

bash - 使用 bash shell 脚本替换文件中的字符串

c++ - 如何监视哪些进程访问 Unix 中的特定文件?

bash - 如何在 UNIX 脚本中使用 awk 作为变量

unix - 如何在 Bourne Shell 中重复一个字符?

regex - 我如何从一个点 grep 到另一个点,同时忽略第一个匹配项?

bash - Python cookiecutter 遍历列表

perl - 翻译 perl 脚本删除脚本 (1) 输出中的控制字符到 sed

bash - 在 bash 中连接星号

grep - Logstash 中缺少 grep 过滤器

linux - 使用 foreach 循环时不会出现列的最大值