linha de comando curl - nomeação de arquivo example.com/[1-10].txt = 01.txt até 10.txt

2

É possível definir a parte variável da saída do nome do arquivo como um comprimento específico e preencher os espaços extras com zeros.

Eu quero que as coisas sejam ordenadas para outros usuários, então eu gostaria de

curl http://example.com/[1-12]/file_name[1-50].kmz -o file_name-#1-#2.kmz' 

para parecer

file_name-01-01.kmz or file_name-12-50.kmz

em vez de

file_name-1-1.kmz and file_name-12-50.kmz

    
por TST 26.03.2012 / 09:37

2 respostas

2

Basta preencher o formato com zeros à esquerda. Então, para o seu exemplo, faça:

curl http://example.com/[01-12]/file_name[01-50].kmz -o file_name-#1-#2.kmz' 
    
por 15.06.2012 / 09:48
0

Existem muitas maneiras. Você poderia usar expansão da cinta Bash de uma maneira inteligente para gerar nomes de arquivos com preenchimento zero , mas logo se tornará complexo. É mais fácil renomear em lote depois de ter feito o download dos arquivos, usando, por exemplo, o script prename , que está disponível em pelo menos distribuições baseadas no Debian após a instalação do Perl.

Esse comando prename fará o preenchimento zero com três dígitos (altere o {3} para outro número para alterar o preenchimento de zeros. Verifique se há zeros de > {n-1} após a segunda barra na primeira expressão ):

$ ls
file_name-1-1.kmz  file_name-12-112.kmz  file_name-12-50.kmz  file_name-140-88.kmz
$ prename -v 's/([0-9]+)/00$1/g; s/0+([0-9]{3})/$1/g' *
file_name-1-1.kmz renamed as file_name-001-001.kmz
file_name-12-112.kmz renamed as file_name-012-112.kmz
file_name-12-50.kmz renamed as file_name-012-050.kmz
file_name-140-88.kmz renamed as file_name-140-088.kmz

Executar como prename -n pela primeira vez para poder inspecionar visualmente as renomeações sem fazer nenhuma alteração. Verifique man prename .

A expressão renomear trabalha primeiro preenchendo todos os números com zeros n-1 e, em seguida, removendo quantos zeros forem necessários para ter n dígitos em todos os números. Não truncará informações, o que é bom.

Os números flutuantes não são tratados acima (por exemplo, file_name-12.7-112.97.kmz ), mas podem ser feitos facilmente com

s/([^\.0-9])([0-9]+)/${1}00$2/g; s/0+([0-9]{3})/$1/g

mas essa versão mais geral também é mais indecifrável :-) (e pode ter sua própria parte de bugs; se floats não forem necessários, use a versão anterior).

( prename está realmente vinculado como rename na maioria dos sistemas.)

    
por 26.03.2012 / 11:16

Tags