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.

eil
fonte
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:

10

Pelo menos no mundo GNU:

touch --date=@1403970787 file

Como com date.

Hauke ​​Laging
fonte
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.

cuonglm
fonte
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 .

Gilles 'SO- parar de ser mau'
fonte