0

私は TestJ というディレクトリの中にいます。このディレクトリ内には、MSC1、MSC2 ... MSC19、HLR1、HLR2 ..、SGSN1、SGSN2 .. などの多くのフォルダがあります。これらの各ディレクトリ内にはスクリプト ALARMS.sh があります。私がやりたいことは、これらすべてのフォルダーをループして、各フォルダーで ALARMS.sh を実行することです。私の現在のコードはこれを使用しています

ls -d SGSN* > temp.txt
while read sgsn_line;do
    echo $sgsn_line
    cd $sgsn_line
    ALARMS.sh
    cd ..
done < temp.txt

ls -d HLR* > temp.txt
while read hlr_line;do
    echo $hlr_line
    cd $hlr_line
    ALARMS.sh
    cd ..
done < temp.txt

ls -d MSC* > temp.txt
while read msc_line;do
    echo $msc_line
    cd $msc_line
    ALARMS.sh
    cd ..
done < temp.txt
rm temp.txt 

しかし、どのファイルにもフォルダーをリストせずに同じ仕事をしたいと思っています。たとえば、を使用して特定のフォルダー内のファイルをループできますfor file in *.txt。フォルダー(フォルダーのみ)についても同じことができるようにしたいと思います。

4

2 に答える 2

1

以下のように使用してください...

for sgsn_line in `ls -ltr SGSN* | grep ^d | awk '{print $NF}'`;do
    echo $sgsn_line
    cd $sgsn_line
    ALARMS.sh
    cd ..
done

....
于 2012-06-12T10:16:53.707 に答える
0

のバージョンがオプションをfindサポートしている-execdir場合、最も簡単な方法は次のとおりです。

find . -name ALARMS.sh -type f -execdir {} \;
于 2012-06-12T20:55:16.437 に答える