我在名为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
遍历给定文件夹中的文件。我希望能够对文件夹(仅文件夹)执行相同的操作。
答案 0 :(得分:1)
使用如下......
for sgsn_line in `ls -ltr SGSN* | grep ^d | awk '{print $NF}'`;do
echo $sgsn_line
cd $sgsn_line
ALARMS.sh
cd ..
done
....
答案 1 :(得分:0)
如果您的find
版本支持-execdir
选项,最简单的方法是:
find . -name ALARMS.sh -type f -execdir {} \;