2016-01-22 35 views
1

我在sh shell中執行基本腳本時遇到了一些困難。我想要做的事很簡單:如何查找文件夾中的特定文件並在存在的情況下執行操作

我想要做一個sh腳本(也可以是csh),通過查看一些文件夾和每個包含我感興趣的文件的文件夾,它應該做使用rdseed命令將相應的文件名粘貼到sh腳本中的特定操作。

我在sh shell中寫和不工作的腳本是:

for dir in EV* 
do 
    echo $dir 
    cd $dir 
    if [ -f GEFLE* = true ]; 
    then 
     set dataless = gur_ini_dataless.seed 
     for file GEFLE* 
     do 
      echo "rdseed -d -o 2 -f "$file " -g " $dataless >> runmseed2ahGEFLE.sh 
     done 
    else 
     echo "File does not exists" 
    fi 
    sleep 0.5 
    cd .. 
done 

有誰知道一個解決方案嗎?

回答

0

請試試這個...我加入了一些備註,行...

#!/bin/sh 

for dir in EV* 
do 
    echo $dir 
    cd $dir 
    if [ -f GEFLE* ] # true if at least one FILE named "GEFLE*" exists 
    then 
     dataless=gur_ini_dataless.seed # no `set`, no spaces 
     for file in GEFLE* # will match all FILES/DIRS/... that start with "GEFLE" 
     do 
      echo "rdseed -d -o 2 -f $file -g $dataless" >> runmseed2ahGEFLE.sh # vars are substituted in double quoted strings 
     done 
    else 
     echo "File does not exists" 
    fi 
    cd .. 
done 

請注意,這隻會看深入到目錄一級。如果你需要一些resursion你應該更好地使用類似

for dir in `find . -type d -name 'EV*'`; do 
    # ... 
done 

我已經把這個問題的方法是:

for f in `find EV* -name GEFLE* -type f`; do 
    echo "rdseed -d -o 2 -f ./$f -g gur_ini_dataless.seed >> ./`dirname $f`/runmseed2ahGEFLE.sh" 
done 
相關問題