Для цикла с именами файлов

Я нашел ответ: dconf-tools и libdconf0 не были установлены, поэтому единство не могло запомнить настройки.

Использовать Software Center или apt-get для установки:

dconf-tools libdconf0
1
задан 7 October 2015 в 18:23

2 ответа

Прежде всего, нет никакой разницы между контуром for для каталогов и одним для файлов. Это точно то же самое. Помните, что на * nix все является файлом.

Итак, ваш цикл будет примерно таким:

for institute in institute1 institute2 institute3
do
    for scenario in scenario1 scenario2 scenario3
    do
        paste "$institute"_*_"$scenario"* > "$institute"_"$scenario".out
    done
done

Если вы не знаете имена института и сценария, вы можете просто запустить его для всех файлов и извлечь их из имен файлов (если ваши имена не содержат пробелов):

for f in *; do echo "${f/_*} ${f##*_}"; done | 
    sort -u | while read ins sce; do 
        paste "$ins"_*_"$sce"* > "$ins"_"$sce".out
    done
6
ответ дан 23 May 2018 в 16:53
  • 1
    @ terdon - Этот ответ работает отлично! Более того, учитывая тот факт, что я хотел бы прокатиться по первым трем столбцам прилагаемой таблицы; Я попытался добавить на paste строку paste "$hyd_model"_*_"$scenario"* <(cut -f4 "$hyd_model"_*_"$scenario"*) > "$hyd_model"_"$scenario".txt, но он не работает. Я хотел бы понять, почему, если у вас есть какие-то намеки? – steve 7 October 2015 в 20:23
  • 2
    @steve, как это «не работает» ?? Любые сообщения об ошибках? То, что вы описываете, должно работать так, если это не так, это будет зависеть от того, что в ваших файлах или каких файлов у вас есть. Возможно, лучше поставить новый вопрос для этого. – terdon♦ 7 October 2015 в 20:33

Возможно использование команды ls. Что-то вроде ls $institute_*_$scenario_*.txt должно возвращать все файлы с тем же институтом и сценарием.

1
ответ дан 23 May 2018 в 16:53
  • 1
    Нет необходимости в ls, вы можете просто сделать paste $institute_*_$scenario_*.txt. – terdon♦ 7 October 2015 в 17:35

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

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