web-dev-qa-db-ja.com

結果を別のコマンドにパイピング

特定のキーワードに一致するファイルがないかファイルシステムをスキャンして、それらを削除しようとしています。私はこれをこれまでに持っています:

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

次に、このコマンドの結果を削除コマンド(rmなど)にパイプする方法

3
uhhhhhhhhhh_

1つの方法は、ファイルのリストを展開し、それを引数としてrmに渡すことです。

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

**スペースや改行があるファイル名では失敗します。

次のように、xargsを使用してrmコマンドを作成できます。

$ find . … … | xargs rm

**改行またはスペースでも失敗します

または、findにコマンドrmを実行するよう依頼します。

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

ただし、最善の解決策は、検索で直接削除オプションを使用することです。

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