有没有办法做一个 ' ls -R | grep "姓名"* | R M; 删除多个目录中的多个文件

Cyc*_*lic 6 command-line bash rm grep ls

我已经安装(编译)了 emerald。该命令make uninstall不起作用(没有生成文件,因为它只是一个脚本)。所以我决定手动删除文件。但是有很多文件。

我尝试了一些东西,但没有奏效。所以我来到这里寻求一些建议。

  • 有没有ls -R | grep blabla*我可以添加的命令来显示文件目录(它只显示文件名)
  • 有真的ls -R | grep bla* | rm吗?

use*_*own 6

如果 'aname' 应该是文件名的开始部分,它会是,从当前目录:

find -name "aname" -delete 
Run Code Online (Sandbox Code Playgroud)

顺便提一句。:

grep "bla"* somewhere
Run Code Online (Sandbox Code Playgroud)

几乎总是错误的,因为 grep 已经进行了部分匹配,这意味着,它可以简单地找到 bla、blafasel 和 xybla

grep bla somewhere
Run Code Online (Sandbox Code Playgroud)

由于误解,删除了答案的旧部分:

在当前目录中,如果您在所有文件中查找“aname”一词,则可以使用:

find -exec grep "aname" {} ";" -delete 
Run Code Online (Sandbox Code Playgroud)


Huc*_*kle 4

xargs您正在寻找的是、find和的组合rm

find将列出与您的条件匹配的所有文件,然后将它们写入(以空值终止)到stdout,该文件将通过管道传输到xargsxargs将采用以 null 结尾的字符串并将它们用作 的参数rm

find -L /path/to/dir -name "*name*" -print0 |xargs -0 -r  rm
Run Code Online (Sandbox Code Playgroud)

来源: http: //linuxcommando.blogspot.com/2007/10/find-xargs-pipe.html

  • “-delete”查找操作可能会有所帮助。 (3认同)