连续运行数千条命令

连续运行数千条命令

我现在有一个任务,要按顺序运行几千条命令。这些命令都采用 形式。只有数字(以$ /home/user/.lcmodel/bin/lcmodel < 2HzSNR100C2.5.txt大胆的类型)在不同文件中有所不同。这些数字是由forMatLab 中的循环生成的。

例如,前面的数字Hz23,后面的数字SNR100200,后面的数字C2.533.5。在这种情况下,我必须运行 12 个这样的命令。是的,我只需要将它们作为一行运行,详细代码已经存储在 txt 文件中。

我对 Linux 完全陌生,有人可以帮我编写一个文件或命令来顺序自动运行这数千条命令吗?

答案1

如果所有文件都在当前工作目录中(即没有文件嵌套在某些子目录中),则使用循环bash for(感谢 Incnis Mrsi 提供更紧密的通配符模式):

for f in ?HzSNR???C*.txt; do /home/user/.lcmodel/bin/lcmodel < "$f"; done

这种特定的通配符模式非常紧密;另外,使用通配符本身将导致当前工作目录中文件的有序列表在语句中展开for,最终导致文件按其数字顺序进行处理;

如果不是所有文件都在当前工作目录中,请使用 find:

find . -type f -name '?HzSNR???C*.txt' -exec /home/user/.lcmodel/bin/lcmodel < {} \;

但是,一般来说,使用find并不保证文件将按照其数字顺序进行处理;如果必须按照其数字顺序进行处理,请使用find++ sortxargs

find . -type f -name '?HzSNR???C*.txt' | sort | xargs -I file /home/user/.lcmodel/bin/lcmodel < file

相关内容