我想使用bash脚本在特定文件后面的目录中的所有文件上运行我的程序。
如果我有一个目录:
fileA
fileB
fileC
fileD
我想在./prog <file>
之后为所有文件运行fileC
。我如何编写一个bash脚本来执行此操作?
我目前有
for FILE in ./tests/*; do
./prog $FILE
if [ $? -eq 0 ]; then
echo "success: $FILE"
else
echo "**FAILURE: $FILE"
exit 1
fi
done
但是,我想从该目录中的特定文件开始。它不一定需要排序,因为ls
列表文件按特定顺序每次都是相同的。
我通常只运行我的脚本,当它失败时,我会针对该特定文件修复它,但之后我想从该文件恢复,而不是从头开始重新启动。
答案 0 :(得分:1)
如果文件已排序,那么您可以使用'<'
和'>'
运算符对两个变量进行逐字比较:
startfile=$1
for FILE in ./tests/*; do
if ! [ "$FILE" '<' "$startfile" ] ; then
echo doing something with $FILE
else
echo Skipping $FILE
fi
done
答案 1 :(得分:0)
for file in `ls tests | grep -A 999999 "^tests/startfile$" | tail -n +2`
do
whatever
done
grep -A 999999列出了tests / startfile(^和$以避免部分匹配)和999999下一个条目。
tail -n +2列出从第2行(从1开始)
开始的所有内容