2011-03-02 5 views
1

私はunixにいくつかのフォルダを持っていますが、aa、ab、acなどと言うことができます。私はこれらのフォルダの中にサブフォルダを持っています。彼らは100,200などのように番号が付けられています。これらのメインフォルダのそれぞれのサブフォルダを削除したいと思います。削除するサブフォルダは特定の数字(700を超えるもの)より大きくなければなりませんスクリプトを使用してこれを行うにはどうすればよいですか?助けてください。UNIXでスクリプトを使用して特定のパターンのファイルを削除する

答えて

2

私はfindコマンドを使用します。あなたはこのような何か行うことができます。

find . -name '[7-9][0-9][0-9]' -execdir echo 'rm -vr' {} + 

はもちろん、あなたが右の名前をヒットするパターンを微調整する必要があるかもしれませんが、私はそれを支援するためのより多くの情報が必要になります。

+0

これは、3桁以上のディレクトリ名では機能しません。 9999 – dogbane

+0

@dogbaneしたがって、パターン名を微調整するための詳細が必要なコメント;) – kojiro

0
#!/bin/bash 

if [ $# -ne 2 ] 
then 
    echo Usage: $0 searchdir limit 
    exit 1 
fi 

searchdir="$1" 
limit="$2" 
find $searchdir -type d | 
egrep "/[0-9]+$" | 
while read dirname 
do 
    let num=`basename "$dirname"` 
if [ $num -ge $limit ] 
then 
    echo rm -rf "$dirname" 
fi 
done 

ラン: ./script.sh dirtosearch thresholdfordelete

あなたは、それは大丈夫だ確信している場合は、あなたがfindを使用してそれをすべて行うことができます

0

-rf RM前にエコーを除去します。

次のコマンドでは、findがファイルをshに渡します。shは、ファイルが> 700であるかどうかを確認し、そうであれば削除をエコーアウトします。 (実際に削除する場合は、echoを削除することはできます)。

find . -type d -regex "^.*/[0-9]+$" -exec sh -c 'f="{}";[ $(basename "$f") -gt 700 ] && echo "rm -rf $f"' \; 
関連する問題