Como definir o mtime de um arquivo no formato de época?


11

Eu sei como obter o mtime de um arquivo no formato de época:

stat --format=%Y <file>

Mas não consegui descobrir como definir o mtime de um arquivo no formato de época. A página do manual touch (1) parece aceitar apenas um valor de "registro de data e hora" (formato fixo mais ou menos que usa meses, dias, horas, minutos, etc) ou uma "sequência de datas legível por humanos de formato livre".

Existe outro utilitário que eu deveria procurar?

Obrigado.


1
Por favor, sempre incluir o seu OS. As soluções geralmente dependem do sistema operacional que está sendo usado. Você está usando Unix, Linux, BSD, OSX, outra coisa? Qual versão?
terdon

Respostas:



1

Com perl:

$ perl -e 'utime (stat($_))[8], time(), $_ for @ARGV' file1 file2 ...

Isso mudará o tempo de todos os arquivos @ARGV. (stat($_))[8]é atime do arquivo.

utime pode receber uma lista de arquivos; se você não se importa em alterar o atime, pode tentar:

 $ perl -e '$t = time(); utime $t, $t, @ARGV' file1 file2 ...

Nota

utimedepende da biblioteca de tempo de execução C e o sistema de arquivos está usando. veja mais em perldoc -f utimee perldoc perlport.


0

Com o touchcomando do GNU coreutils (ou seja, no Linux e Cygwin não incorporado), consulte o manual completo (geralmente disponível localmente em formato de informação) para obter a documentação dos formatos de entrada de data . As datas da época são indicadas com o prefixo @:

touch -d @1234567890 foo

Isso também funciona com o BusyBox (pelo menos em alguns sistemas, pode depender das opções de compilação).

Com o * BSD, acho que você não pode fazer isso touchsozinho, mas pode chamar datepara formatar o horário da época em um formato que touchaceite.

touch -d "$(date -r 1234567890 +%Y%m%d%H%M.%S)" foo

O POSIX notoriamente não tem maneiras de manipular datas de época. Você pode usar perl .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.