2012-03-24 8 views
1

私のコードで問題を見つけるのを助けることができますか?ツリー内のすべてのファイルを削除する必要がありますツリー内のファイルを削除する

function option_c { 
for i in `find "$TEST_DIR" -type f | grep -E "(stdout|stderr|status)-(captured|delta)"` ; do 
    if [ -w $i ] ; then 
     rm $i 
    fi 
    exit 0 
done 
} 

ありがとうございました。

答えて

3

exitを取り出すと、最初のファイルの後にスクリプトが終了します。

これはすべてfindでも可能です。

1

tripleeeが言及したように、すべての検索で行うことができます。

find "$TEST_DIR" -type f -perm +0200 -regextype posix-awk -regex ".*st(dout|derr|atus)-(captured|delta).*" -delete 

または

find "$TEST_DIR" -type f -perm +0200 -regex ".*st\(dout\|derr\|atus\)-\(captured\|delta\).*" -delete 

find "$TEST_DIR" -type f -perm +0200 -exec egrep "(stdout|stderr|status)-(captured|delta)" {} ";" -delete 

(少なくともGNU-見つけ、これは私が持っているすべてのもので、-deleteスイッチとregex-optionsを持っています)。

+0

'find'コマンドの' -delete'は[必須](http://pubs.opengroup.org/onlinepubs/009604599/utilities/find.html)ではありませんが、見たことがある... –

+0

オリジナルの 'grep'は、一致するファイル名を見つけるためのものです。私はあなたが '-rname 'st(dout | derr | atus) - (caputured | delta)' 'を望んだと思うが、私は自分のコンピュータではない。 – tripleee

+0

@トライプルー:はい、あなたが正しいと思います。 -regex(gnu-find)に変更されました。 –

関連する問題