Obter data de modificação que pode ser usada com o toque -m

3

Eu preciso obter a data de modificação de um arquivo para que eu possa configurá-lo em outros arquivos usando touch -m .

stat ou perl -le 'print((stat shift)[9])' Não retornou o que eu queria. Eu acho que você deveria usar - e +, mas não sei como usá-lo corretamente.

Eu pensei que usando o -t , embora pudesse definir de outra forma, aqui tentei defini-lo para 2013 em 3 de julho.

touch -t  20130703

Mas isso também não mudou da maneira que eu quero. Então, voltando à questão, como copio outros atributos de arquivos para que eu possa configurá-los com touch -m ?

    
por DisplayName 21.01.2015 / 23:06

3 respostas

4

Você pode converter o tempo retornado por stat ou perl para o formato desejado com o comando date (supondo que você tenha GNU coreutils instalados):

# Convert UNIX time returned by perl to year+month+day
$ date -d @$(perl -le 'print((stat shift)[9])' FILENAME) +%Y%m%d
20130703

# Convert formatted time returned by GNU stat to year+month+day
$ date -d "$(stat -c %y FILENAME)" +%Y%m%d
20130703

O date em si também pode fornecer a hora da modificação dos arquivos diretamente:

$ date -r FILENAME +%Y%m%d
20130703

Para detalhes, veja a página man do GNU date ( man date ).

    
por 21.01.2015 / 23:30
2
stat -f %m -t %Y%m%d%H%M.%S myfile

Imprime o registro de data e hora no formato necessário para touch -t .

Tenha em atenção que o carimbo de data / hora é expresso no fuso horário local, o que pode ser desagradável para portar ficheiros entre fusos horários ou para marcas de hora durante a hora repetida da mudança de verão para inverno nos fusos horários com DST. Para evitar problemas de fuso horário, use o carimbo de data / hora UTC:

timestamp=$(TZ=UTC stat -f %m -t %Y%m%d%H%M.%S myfile)
…
TZ=UTC touch -t "$timestamp" myotherfile

Observe que isso se aplica ao utilitário BSD stat , como fornecido com o OSX, não para os utilitários GNU ou BusyBox stat , como os encontrados no Linux.

    
por 22.01.2015 / 00:37
0

Fazer "ls -otr --time-style = +% Y% m% d% H% M.% S" obterá a data no formato adequado, embora com um monte de outras informações que são facilmente editadas.

Isso é útil quando atribuído a um alias e a saída é redirecionada para um arquivo.

    
por 22.01.2015 / 04:13