• ベストアンサー

ファイルを検索して削除する

/www 以下のディレクトリーに aaa.txt というファイルが存在する場合、 そのファイルが存在するディレクトリー内の全ての ***.txt を削除したいです。 find /www -name aaa.txt | xargs rm だと、aaa.txt だけの削除になります。 以下も考えましたが、これだと検索対象ディレクトリーが /www だけになります。 #!/bin/bash if test -e /www/aaa.txt then rm -f /www/*.txt fi どのように記述するとよいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

-execdir か -okdir 使うか find /www -name aaa.txt -execdir sh -c 'rm -f *.txt' \; なんかひとつずつ処理したいんなら find /www -name aaa.txt | while read i; do cd ${i%/*} && rm -f *.txt; done とかスクリプト的にもってくとか?

tanpopo012
質問者

お礼

完璧に動作しました。ありがとうございました。

その他の回答 (2)

回答No.3

未テストですが、こんな感じでどうでしょう。 find /www -name aaa.txt -type f | xargs -I{} rm `dirname {}`'/*.txt'

tanpopo012
質問者

お礼

`./*.txt': No such file or directory  となりました。ありがとうございました。

  • ya9pon
  • ベストアンサー率34% (88/254)
回答No.1

find /www -name *.txt* -exec rm -r {} \; 確認する場合は。 find /www -name *.txt* -ok rm -r {} \;

tanpopo012
質問者

補足

「aaa.txt というファイルが存在する場合」に限るのですが。。

関連するQ&A