- ベストアンサー
ファイルを検索して削除する
/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 どのように記述するとよいでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
-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 とかスクリプト的にもってくとか?
その他の回答 (2)
- SherlockHolmes2
- ベストアンサー率40% (175/429)
回答No.3
未テストですが、こんな感じでどうでしょう。 find /www -name aaa.txt -type f | xargs -I{} rm `dirname {}`'/*.txt'
質問者
お礼
`./*.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 {} \;
質問者
補足
「aaa.txt というファイルが存在する場合」に限るのですが。。
お礼
完璧に動作しました。ありがとうございました。