我有一个文件夹Cabo_Verde,在这个文件夹里面我有几个文件夹(001到300),每个文件夹有几个文件,如下所示:
文件名:Cabo_verde
001
2008.001.00.00.CVBR1.LHZ.SAC
2008.001.00.00.CVBR2.LHZ.SAC
...
002
2008.002.00.00.CVBR1.LHZ.SAC
2008.002.00.00.CVBR2.LHZ.SAC
...
我想在每个文件夹中运行一个脚本,这就是我所做的:
for dir in `ls $Cabo_verde`;
do
for subdir in `ls $Cabo_Verde/$dir`;
do
$(for file in *SAC; do
sac <<EOF
echo on
read $file
chnhdr KCMPNM LHZ
write over
quit
EOF
done)
done;
done
最后我得到了
ls:cannot access /001: No such file or directory
ls:cannot access /002: No such file or directory
有人可以帮我吗?
由于
答案 0 :(得分:1)
作为可靠性辅助工具,我建议使用Outbound data transfers
编写和运行所有脚本,您的参数名称拼写错误就会很明显。
你说你想在每个目录中运行一个脚本,但它实际上是真的吗?反正...
你可以像这样嵌套两个循环:
set -u
或者你可以用这样一个循环来完成它:
for d in Cabo_Verde/*/; do
cd $d
for f in *.SAC; do
sac ... $f
done
done
当然,你根本不需要任何循环:
for f in Cabo_Verde/*/*.SAC; do
cd ${f%/*}
sac ... $f
done
其中find Cabo_Verde -name \*.SAC -execdir tool
是包含tool