Como renomear arquivos em lote no Mac OS X?

Como renomear arquivos em lote no Mac OS X?

Eu tenho vários arquivos com nomes como MOV001.mpg, MOV002.mpg etc. Todos eles têm data e hora diferentes.

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

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

Muito obrigado antecipadamente.

Responder1

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 suas necessidades.

Responder2

A pergunta original especifica que os arquivos resultantes também terminam com uma extensão de arquivo. Para fazer isso de forma portátil, no bash, pegue a extensão do /path/to/file.extwith ${f##*.}built-in, 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 de

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

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

informação relacionada