Как сценарий оболочки:
tempdir="$(mktemp -d)"
i=0; for file in *.mp3; do
i=$((i+1))
mv -- "$file" "$tempdir/${file%%[0-9]*.mp3}$(printf '%06d.mp3' "$i")"
done
mv "$tempdir"/*. && rmdir "$tempdir"
Запустите этот скрипт в вашем каталоге mp3. Он создаст временный каталог и переместит переименованные файлы в этот каталог, чтобы избежать переименования уже существующих файлов. Когда все файлы обработаны, файлы перемещаются обратно в текущий каталог.
При циклическом переборе имен файлов ${file%%[0-9]*.mp3}
удаляет существующий суффикс nnnnnn.mp3
из имени файла и $(printf '%06d.mp3' "$i")
добавляет новый суффикс с нулевым префиксом -к имени целевого файла.
Вы должны использовать относительный индекс текущей записи в массиве для второго выражения. Это означает a[$4]
вместо a[$3]
.
awk 'FNR==NR{a[$3]=$5" "$6" "$7" "$8" "$9;next} ($4 in a) {print $1,$2,$3,$4,a[$4]}' file1 file2
RIGHT UTTAR_PRADESH AGRA AGRA_AERO(IAF) 27 09N 77 58E 0168
RIGHT UTTAR_PRADESH AGRA AGRA 27 10N 78 02E 0169
RIGHT MAHARASHTRA YEOTMAL YEOTMAL 20 24N 78 09E 0451
RIGHT ARUNACHAL_PRADESH LOWER_SUBANSIRI ZERO 27 35N 94 50E 1476
Это совпадение, что вы получили почти правильные результаты для этого примера, потому что большинство строк имеют идентичные 3-е и 4-е поля.