Cha*_* So 4 command-line bash scripts matlab
我现在有一项任务要按顺序运行数千个命令。命令都是在形式。只有数字(粗体)因文件而异。这些数字是从MatLab 中的循环生成的。$ /home/user/.lcmodel/bin/lcmodel < 2HzSNR100C2.5.txt
for
例如,号码前Hz
会2
和3
,后面的数字SNR
会100
和200
,数字后C
会2.5
,3
和3.5
。在这种情况下,我必须运行 12 个此类命令。是的,我只需要将它们作为单行运行,详细代码已经存储在 txt 文件中。
我对 Linux 完全陌生,有人可以帮我编写一个文件或命令来顺序自动运行这数千个命令吗?
kos*_*kos 12
如果所有文件都在当前工作目录中(即没有嵌套在某个子目录中),请使用bash
for
循环(感谢 Incnis Mrsi 提供更紧密的通配模式):
for f in ?HzSNR???C*.txt; do /home/user/.lcmodel/bin/lcmodel < "$f"; done
Run Code Online (Sandbox Code Playgroud)
这种特定的通配模式非常紧密;也使用 globbing 本身将导致当前工作目录中文件的有序列表在for
语句中被扩展,最终导致按数字顺序处理文件;
如果不是所有文件都在当前工作目录中,请使用 find:
find . -type f -name '?HzSNR???C*.txt' -exec /home/user/.lcmodel/bin/lcmodel < {} \;
Run Code Online (Sandbox Code Playgroud)
然而find
,一般使用并不能保证文件将按其数字顺序进行处理;如果他们的数字顺序处理它们是强制性的,使用find
+ sort
+ xargs
:
find . -type f -name '?HzSNR???C*.txt' | sort | xargs -I file /home/user/.lcmodel/bin/lcmodel < file
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1263 次 |
最近记录: |