0

我在一个名为 TestJ 的目录中。在此目录中,我有许多文件夹,例如 MSC1,MSC2 ... MSC19,HLR1,HLR2 ..,SGSN1,SGSN2 ..。现在每个目录中都有一个脚本 ALARMS.sh。我想要做的是遍历所有这些文件夹并在每个文件夹中执行 ALARM.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 回答