Batch renomeia fotos por data de criação no Mac OS X usando o Bash não trabalhando com espaços

1

Estou procurando uma solução para renomear em lote as fotos no Mac OS X. Encontrei muitas soluções, mas a maioria delas não funciona se o arquivo tiver um espaço ou se eu quiser coloque um espaço no nome do arquivo.

Por exemplo, encontrei este script:

for i in *.jpg; do newname=$(stat -t %Y-%m-%d_%H.%M.%S -f %Sm -- $i); mv -- $i $newname.jpg; done

O script funciona desde que eu não coloque um espaço no nome do arquivo final (eu quero um espaço no nome do arquivo porque eu tenho renomeado meus arquivos com espaços nos últimos 3 anos no Windows). E também quebra se o arquivo em si tiver um espaço nele. Então, se eu tiver uma foto chamada "Hello World.jpg", ela não será processada.

Alguém teria uma solução para isso, por favor? Isso, de preferência, não requer nenhum software adicional (eu só quero poder copiar / colar esse script toda vez que eu alternar as máquinas).

Obrigado!

    
por xtrimsky 05.02.2018 / 15:16

2 respostas

3

Você precisa usar aspas nas suas substituições:

for i in *.jpg; do newname="$(stat -t %Y-%m-%d_%H.%M.%S -f %Sm -- "$i")"; mv -- "$i" "$newname.jpg"; done

Ele precisa ser aspas duplas para permitir a expansão e a $() de expansão.

    
por 05.02.2018 / 15:30
0

Normalmente, seria suficiente substituir $i por "$i" .

    
por 05.02.2018 / 15:28

Tags