Uma maneira de fazer isso seria renomear seus arquivos para torná-los mais fáceis de classificar usando as ferramentas da GUI. Para testar isso, criei alguns arquivos com prefixos numéricos crescentes e nomes aleatórios:
for i in {001..005} {150..155}; do
n=$(cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c 10);
touch $i"_"$n.ext;
done
Isso criou os seguintes arquivos no meu sistema:
$ ls
001_zxUBrPQEEt.ext 003_crMQ1lLrPA.ext 005_t3gf-X2N82.ext
151_aKDwJu7phP.ext 153_SSqGdDLOmO.ext 155_mlnSjEGdCF.ext
002_cmAdbTcm0L.ext 004_-39-uI6G9e.ext 150_Vft6mVa5LN.ext
152_5QNPNYdqDj.ext 154_A3EQG1_idu.ext
Para classificá-los como você deseja, deve ser suficiente mover o prefixo numérico para o final do nome do arquivo. Você pode fazer isso usando o seguinte comando rename
(para testar a mudança de nome sem realmente modificar nenhum nome, use -n
em vez de -v
):
$ rename -v 's/^(.+?)_(.*)/_/' *
001_zxUBrPQEEt.ext -> zxUBrPQEEt.ext_001
002_cmAdbTcm0L.ext -> cmAdbTcm0L.ext_002
003_crMQ1lLrPA.ext -> crMQ1lLrPA.ext_003
004_-39-uI6G9e.ext -> -39-uI6G9e.ext_004
005_t3gf-X2N82.ext -> t3gf-X2N82.ext_005
150_Vft6mVa5LN.ext -> Vft6mVa5LN.ext_150
151_aKDwJu7phP.ext -> aKDwJu7phP.ext_151
152_5QNPNYdqDj.ext -> 5QNPNYdqDj.ext_152
153_SSqGdDLOmO.ext -> SSqGdDLOmO.ext_153
154_A3EQG1_idu.ext -> A3EQG1_idu.ext_154
155_mlnSjEGdCF.ext -> mlnSjEGdCF.ext_155
O comando rename
essencialmente lê Perl. Aqui, estamos dando a ele um operador de substituição ( s/original/replacement/
) que será aplicado a cada nome de arquivo e renomeá-lo para o resultado do operador mencionado. A regex usada corresponderá a tudo, desde o início do nome do arquivo ( ^
) até o primeiro _
( (.*?)_
). O ?
torna a correspondência não-gulosa, forçando-a a encontrar a sequência de correspondência mais curta possível. Os parênteses "capturam" as substrings correspondentes, disponibilizando-as no lado direito do operador. O primeiro padrão capturado será , o segundo
e assim por diante. O resultado é que o prefixo numérico (
) é movido para depois do resto do nome (
).
Depois de ter executado este comando, você pode abrir o diretório e fazer sua coisa com o editor da GUI. Para inverter e voltar aos nomes originais use:
rename 's/(.*)_(\d+$)/_/' -- *
Aqui, o regex está correspondendo tudo até _
e, em seguida, um ou mais números ( \d+
) até o final da string ( $
). O --
no final é uma característica geral de muitos programas de linha de comando e significa o fim das opções. Isso garante que qualquer nome de arquivo que comece com -
não seja confundido com uma opção.