bash遍历文件夹中的文件,并在文件夹中有新文件时更新循环

时间:2019-03-27 19:29:48

标签: bash

嗨,我有这个bash脚本:

for mesh in meshFiles/*.unv;
do
    scaleFolder=`echo $mesh|cut -d'_' -f 1|cut -d'/' -f 2`
    mkdir $scaleFolder

    caseFolder="$scaleFolder/`basename ${mesh%.*}`"

    mkdir $caseFolder

    cp -r baseCase/* $caseFolder
    cp $mesh $caseFolder/mesh.unv
    echo "runing" `basename $mesh`
    cd $caseFolder
    ./Allrun
    cd ../..

done

并适用于该文件夹中的所有文件,问题是该过程很慢,因此我想在 meshFile 文件夹中放入更多文件,并避免刹车并重新启动循环每个新文件。

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是编写一个make文件。这样一来,您将无法在进程运行时添加文件,但可以在脚本完成后重新运行,而不必重新处理已经处理过的内容,即不是从头开始。这很简单,在某些情况下可能就足够了。

如果确实需要在运行时添加文件,则需要具有一个监视进程,该进程可以监视文件夹内容并生成新文件的处理任务。这也需要一些任务管理(以了解哪些是新的/正在进行的/完成的)。这并不容易,所以我建议先尝试 make

这是one intro,但如果您用Google搜索一点,还有更多。本示例是关于在.c源代码文件发生更改(但make是通用的)时编译C代码,并且可以运行您要求其运行的任何命令(例如,如果任何.unv更改,或者如果出现一个新的。)