Bash
管道查找結果到另一個命令
我正在嘗試掃描文件系統以查找與特定關鍵字匹配的文件,然後將其刪除。到目前為止我有這個:
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