Выполните тысячи команд последовательно

У меня есть задача теперь для выполнения некоторой тысячи команд последовательно. Команды - все в форме $ /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, кто-то может помочь мне записать файл или команду для выполнения этих тысяч команд последовательно и автоматически?

4
задан 7 September 2015 в 12:46

1 ответ

Если все файлы находятся в текущем рабочем каталоге (т.е. ни один не вкладывается в некотором подкаталоге), используйте 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
12
ответ дан 23 November 2019 в 11:41

Другие вопросы по тегам:

Похожие вопросы: