Antecedentes
Renomeie um conjunto de arquivos com base em um nome que corresponda a outro conjunto, usando uma ordem de classificação com base no tamanho do arquivo para corresponder aos nomes dos arquivos. Os arquivos de ambos os conjuntos têm aproximadamente os mesmos tamanhos. Perto o suficiente para que, quando classificadas por tamanho de arquivo, ambas as listas estejam na mesma ordem. O número de arquivos em cada conjunto é exatamente o mesmo.
Problema
Primeiro conjunto de arquivos:
master~$ for f in $(ls -S); do echo $f; done
06-AudioTrack_06.flac
08-AudioTrack_08.flac
01-AudioTrack_01.flac
05-AudioTrack_05.flac
02-AudioTrack_02.flac
Segundo conjunto de arquivos:
corrupt~$ for f in $(ls -S); do echo $f; done
Groove_de_V..flac
Jump.flac
Do_You_Savvy.flac
Gershwins_Blues.flac
Blue_Skies.flac
If_I_Had_A_Ribbon_Bow.flac
Pergunta
Como você renomeia o primeiro conjunto da seguinte forma:
06-Groove_de_V..flac
08-Jump.flac
01-Do_You_Savvy.flac
05-Gershwins_Blues.flac
02-Blue_Skies.flac
Script
Até agora ...
master~$ for f in $(ls -S); do
IDX=$(echo $f | awk '{print substr( $1, 1, 2 )}');
echo "mv $i $IDX-";
done
Produz:
mv 06-AudioTrack_06.flac 06-
mv 08-AudioTrack_08.flac 08-
mv 01-AudioTrack_01.flac 01-
mv 05-AudioTrack_05.flac 05-
mv 02-AudioTrack_02.flac 02-
Obrigado!