У меня есть задача теперь для выполнения некоторой тысячи команд последовательно. Команды - все в форме $ /home/user/.lcmodel/bin/lcmodel < 2HzSNR100C2.5.txt
. Только числа (полужирным тип) отличаются от файла до файла. Числа сгенерированы от a for
цикл в MatLab.
Например, число прежде Hz
будет 2
и 3
, число после SNR
будет 100
и 200
, числа после C
будет 2.5
, 3
и 3.5
. В этом случае я должен выполнить 12 из этого вида команд. И да, я только должен выполнить их как одни строки, подробные коды уже хранятся в txt файлах.
Я абсолютно плохо знаком с Linux, кто-то может помочь мне записать файл или команду для выполнения этих тысяч команд последовательно и автоматически?
Если все файлы находятся в текущем рабочем каталоге (т.е. ни один не вкладывается в некотором подкаталоге), используйте bash
for
цикл (благодаря Incnis Mrsi для более трудного globbing шаблона):
for f in ?HzSNR???C*.txt; do /home/user/.lcmodel/bin/lcmodel < "$f"; done
Этот определенный globbing шаблон довольно труден; также использование globbing само приведет к заказанному списку файлов в текущем рабочем каталоге, который будет расширен в for
оператор, получающийся, в конечном счете, в файлах, обрабатываемых в их числовом порядке;
, Если не все файлы находятся в текущем рабочем каталоге, использование находит:
find . -type f -name '?HzSNR???C*.txt' -exec /home/user/.lcmodel/bin/lcmodel < {} \;
Однако использование find
в целом не гарантирует, что файлы будут обработаны в их числовом порядке; если обработка их в их числовом порядке обязательна, используйте find
+ sort
+ xargs
:
find . -type f -name '?HzSNR???C*.txt' | sort | xargs -I file /home/user/.lcmodel/bin/lcmodel < file