2011-02-18 55 views
0

我想使用bash脚本在特定文件之后的目录中的所有文件上运行我的程序。特定文件后的Bash列表文件

如果我有这样一个目录:

fileA 
fileB 
fileC 
fileD 

我想fileC后运行./prog <file>的所有文件。我将如何编写一个bash脚本来做到这一点?

我现在有

for FILE in ./tests/*; do 
    ./prog $FILE 
    if [ $? -eq 0 ]; then 
    echo "success: $FILE" 
    else 
    echo "**FAILURE: $FILE" 
    exit 1 
    fi 
done 

但是,我想在该目录中的特定文件来启动。它不一定需要排序,因为ls按照每次相同的特定顺序列出文件。

我通常只运行我的脚本,当它失败时,我修复它的具体文件,但然后我想从该文件恢复,而不是从头开始重新启动。

回答

1

如果文件进行排序,那么你可以使用'<''>'运营商做比较两个变量的stringwise:

startfile=$1 
for FILE in ./tests/*; do 
    if ! [ "$FILE" '<' "$startfile" ] ; then 
     echo doing something with $FILE 
    else 
     echo Skipping $FILE 
    fi 
done 
0
for file in `ls tests | grep -A 999999 "^tests/startfile$" | tail -n +2` 
do 
    whatever 
done 

的grep -A 999999列出测试/ startfile(^和$,以避免部分匹配)和999999个一个条目。

尾-n +2列出了从第2行开始(1型)