uhh*_*hh_ 6 bash pipe find shell-script
我正在尝试扫描文件系统以查找与特定关键字匹配的文件,然后将其删除。到目前为止我有这个:
find . -iregex '.*.new.*' -regex '.*.pdf*'
Run Code Online (Sandbox Code Playgroud)
然后我如何将此命令的结果通过管道传输到删除命令(例如rm)
ImH*_*ere 10
一种方法是展开文件列表并将其作为参数提供给 rm:
$ rm $(find . -iregex '.*.new.*' -regex '.*.pdf*')
Run Code Online (Sandbox Code Playgroud)
**如果文件名包含空格或新行,则会失败。
您可以使用 xargs 来构建 rm 命令,如下所示:
$ find . … … | xargs rm
Run Code Online (Sandbox Code Playgroud)
** 换行或空格也会失败
或者更好,要求find执行命令 rm:
$ find . … … --exec rm {} \;
Run Code Online (Sandbox Code Playgroud)
但是最好的解决办法是直接在find中使用delete选项:
$ find . -iregex '.*.new.*' -regex '.*.pdf*' -delete
Run Code Online (Sandbox Code Playgroud)