У меня есть цикл for
, чтобы перечислить файлы в каталоге, а затем на основе их имен переместите их в различные соответствующие папки.Повторная оценка условия цикла для каждого запуска
Say есть 300 файлов, как показано ниже:
- Prefix_filename1_suffix1_date.txt - 100 файлов
- Prefix_filename101_suffix2_date.txt - 150 файлов
- Prefix_filename251_suffix3_date.txt - 50 файлов
Я бы только знать префикс и расположение файлов файлов в начале цикла:
cd folder_location
for f in $(ls ${file_prefix}*); do
Имена файлов будут известны мне после ввода цикла for
- это одна из проблем.
Я использую регулярное выражение найти суффикс, общий для всех файлов, а затем использовать awk
, чтобы получить имя файла между префиксом и суффиксом. Поэтому использовать regex и awk
Мне нужны имена файлов для прохождения цикла for
.
При обработке этих файлов я перемещаю все одинаковые файлы вместе, поэтому (если бы было три набора файлов) файлы можно было перемещать за 3 прогона (скажем, 1-го, 101-го и 251-го), а остальные 297 не делайте ничего, потому что нет файлов для обработки, потому что он перечисляет 300 файлов - изначально цикл запускается 300 раз.
Как этого избежать? И заставьте цикл работать всего 3 раза.
Можете ли вы разместить свою петлю? –
для f в $ (ls $ {file_prefix} *); do – zeushvk
Я делаю cd folder_location перед циклом for – zeushvk