Bash

管道查找結果到另一個命令

  • June 22, 2017

我正在嘗試掃描文件系統以查找與特定關鍵字匹配的文件,然後將其刪除。到目前為止我有這個:

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

然後如何將此命令的結果通過管道傳輸到刪除命令(例如rm

一種方法是擴展文件列表並將其作為參數提供給 rm:

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

**如果文件名包含空格或換行符,這將失敗。

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

$ find . … … | xargs rm

** 換行符或空格也會失敗

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

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

但最好的解決方案是直接在 find 中使用 delete 選項:

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

引用自:https://unix.stackexchange.com/questions/372602