Eu tenho um diretório com arquivos como esses
2022-11-08-0001.gzip
2022-11-08-0002.gzip
2022-11-08-0003.txt
2022-11-08-0004.png
2022-11-08-0005.txt
2022-11-08-0006.txt
2022-11-08-0007.png
2022-11-08-0008.txt
2022-11-08-0009.txt
2022-11-08-0010.png
e quer dividi-los em subdiretórios assim
/gzip
2022-11-08-0001.gzip
2022-11-08-0002.gzip
/png
2022-11-08-0004.png
2022-11-08-0007.png
2022-11-08-0010.png
/txt
2022-11-08-0003.txt
2022-11-08-0005.txt
2022-11-08-0006.txt
2022-11-08-0008.txt
2022-11-08-0009.txt
Encontrei esta solução curta e doce , mas não consegui personalizá-la de acordo com minhas necessidades porque o comprimento das extensões de arquivo varia. Os nomes de base dos arquivos são de igual tamanho, no entanto.
Com
zsh
(e supondo que o padrão2022-*.*
corresponda a todos os arquivos relevantes, ou seja, arquivos com nomes começando com a string2022-
e contendo pelo menos um ponto):Em
zsh
,$variable:e
será igual a$variable
, mas com tudo antes do último ponto removido (deixando a "extensão").Teste:
Usando
zsh
frombash
(e usando uma forma abreviada defor
nozsh -c
script e condensando oname
nome da variável paran
):Você simplesmente passaria por cada nome de arquivo, criaria o diretório correspondente, se ele ainda não existir, e moveria o arquivo para lá. Algo como