Como renomear em lote arquivos no Mac OS X?

1

Eu tenho o monte de arquivos que têm nomes como MOV001.mpg, MOV002.mpg etc. Todos eles têm data e hora diferentes.

Como posso renomeá-los para que eles se transformem em 2012 08 05 13 45 33 MOV001.mpg, 2012 09 02 23 45 07 MOV002.mpg etc?

Em outras palavras, como extrair as informações de data e hora dos arquivos que eu renomeio?

Muito obrigado antecipadamente.

    
por Sunny Reborn Pony 28.09.2012 / 11:28

2 respostas

1

Não testado:

for f in *.mpg; do
  mv "$f" "$(stat -f "%m" -t "%Y %m %d %H %M %S" "$f") $f"
done

stat -f "%m" deve produzir a data da última modificação do arquivo, -t "%Y %m %d %H %M %S" deve formatar a data de acordo com seus requisitos.

    
por 28.09.2012 / 13:15
1

A pergunta original especifica que os arquivos resultantes também terminam com uma extensão de arquivo. Para fazer isso de uma maneira portátil, no bash, pegue a extensão do /path/to/file.ext com ${f##*.} integrado, resultando em uma linha de:

for f in *.FOO; do mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}" ; done

e um bloco de código

for f in *.FOO ; do
    mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}"
done

assim, quando você muda o FOO (por exemplo, de * .mpg para * .png), os nomes dos arquivos de saída são normais.

    
por 10.11.2017 / 22:15