Как перебрать пару файлов в bash?

У меня есть куча файлов и эти файлы идут парой. Например:

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, например, взять первые две пары, получить вывод, затем взять вторую пару, получить вывод и так далее.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот что вы знаете: каждое имя файла состоит из двух частей, разделенных _. Первая часть произвольная, вторая часть либо 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

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