Я новичок на этом сайте (и для программирования, более или менее), но я надеюсь, что вы сможете помочь.Командная строка bash для ввода нескольких каталогов и выполнения команды
У меня есть многочисленные каталоги с именем 3K, 4K, 5K и т. Д. В каждом каталоге у меня есть 12 подкаталогов с именем v1 по v12, каждый из которых содержит файл с именем OUTCAR. Я пытаюсь написать команду bash, которая позволит мне вводить каждый из подкаталогов и собирать данные из OUTCAR.
Функция работает без проблем при вводе каждого подкаталога в отдельности.
Я использую
для файла в V {1..12}; do grep "key_string" OUTCAR | awk '{print (actual_stuff)}'> output.dat; сделано
Из * K fine, который содержит поддиректории v {1..12}.
Однако, я получаю сообщение об ошибке, указывающее, что OUTCAR не существует для каждого v {1..12}. Я знаю, что это так, поэтому я предполагаю, что сначала я не направил команду на cd в каждый подкаталог. Какие-нибудь советы?
Спасибо!
Если все выходные данные идет в один output.dat файла или вы хотите output.dat файла рядом каждый файл OUTCAR? В целом, вероятно, проще использовать команду find, например: «find -name OUTCAR» и либо выполнить grepping/awking через xargs, либо выполнить итерацию результата с помощью цикла «while read». –
Я собираюсь создать отдельный файл output.dat для каждого OUTCAR, напечатанный в каждом подкаталоге v1-v12. – LRB83