У меня есть куча файлов и эти файлы идут парой. Например:
File1_1.tar.gz, File1_2.tar.gz
File2_1.tar.gz, File2_2.tar.gz
...
Я беру первую пару, выполняю кучу команд и получаю результат, затем перехожу ко второй паре. Но я могу сделать это только в том случае, если в папке есть два файла типа File1_1.tar.gz, File1_2.tar.gz
, после чего я удаляю их и добавляю вторую пару вручную.
Я беру имена файлов из такого каталога
FILE_1=$(ls | sort -n | head -n 1)
FILE_2=$(ls | sort -n | tail -n 1)
Я хотел бы сделать это с циклом for, например, взять первые две пары, получить вывод, затем взять вторую пару, получить вывод и так далее.
Вот что вы знаете: каждое имя файла состоит из двух частей, разделенных _
. Первая часть произвольная, вторая часть либо 1.tar.gz
, либо 2.tar.gz
, а файлы идут парами.
Это означает, что вы можете просто перебрать один набор и использовать расширение параметра до генерировать (известной) другой половины пары.
for f1 in *_1.tar.gz; do
base=${f1%_1.tar.gz} # Strip _1.tar.gz, leaving File1, File2, etc
f2=${f1%_1.tar.gz}_2.tar.gz # add _2.tar.gz to get File1_2.tar.gz, etc
...
done