将查找结果通过管道传输到另一个命令中

将查找结果通过管道传输到另一个命令中

我正在尝试扫描文件系统以查找与特定关键字匹配的文件,然后删除它们。到目前为止我有这个:

find . -iregex '.*.new.*' -regex '.*.pdf*'

然后如何将此命令的结果传输到删除命令(例如rm

答案1

一种方法是扩展文件列表并将其作为参数传递给 rm:

$ rm $(find . -iregex '.*.new.*' -regex '.*.pdf*')

**如果文件名中包含空格或换行符,则会失败。

您可以使用 xargs 构建 rm 命令,如下所示:

$ find . … … | xargs rm

** 换行符或空格也会失败

或者更好的是,要求find执行命令 rm:

$ find . … … -exec rm {} \;

但最好的解决方案是直接在 find 中使用删除选项:

$ find . -iregex '.*.new.*' -regex '.*.pdf*' -delete

相关内容