在bash中的多个文件夹中运行脚本

时间:2016-10-26 10:58:03

标签: bash scripting directory

我有一个文件夹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

有人可以帮我吗?

由于

1 个答案:

答案 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

的脚本