Altera o ano de um arquivo, mantendo o mês e o dia do mês

1

Tenho vários arquivos jpeg (mais de 3.000) que gostaria de ter no ano da data de criação. Eu gostaria de manter a data original, exceto para o ano que deve ser alterado de qualquer coisa para 2013.

Eu tentei touch , dando apenas o ano para a opção --date :

touch --date 2013 f1219486.jpg

O ano é alterado para 2013, mas o mês e o dia são alterados para hoje. O uso de -date 20130000 e outras variantes curinga não funcionou.

Posso tocar apenas no ano de um arquivo usando o toque (ou outro comando)?

    
por ixe013 31.07.2013 / 06:48

1 resposta

5

Você pode usar o argumento -t em vez de --date . De man touch :

  -t STAMP
         use [[CC]YY]MMDDhhmm[.ss] instead of current time

Agora, você pode obter esse STAMP da maneira que você está interessado usando o próximo comando:

STAMP=$(stat -c %y f1219486.jpg | \
        awk 'BEGIN {FS="[-]|[:]|[ ]|[.]"} {printf "."}' | \
        sed -r 's/^/13/g')

Algumas explicações:

  • stat -c %y f1219486.jpg retornará o horário da última modificação de f1219486.jpg
  • awk 'BEGIN {FS="[-]|[:]|[ ]|[.]"} {printf "."}' alterará a saída do comando anterior neste formato: MMDDhhmm.ss
  • sed -r 's/^/13/g' adicionará 13 (ano atual) na frente de MMDDhhmm.ss

E agora você pode alterar apenas o ano do seu arquivo:

touch -t $STAMP f1219486.jpg
    
por Radu Rădeanu 31.07.2013 / 08:05