Em que ordem os datados são ordenados? Certamente não ordem alfanumérica.
ls -lt
classifica por tempo de modificação. Mas eu preciso de tempo de criação.
files
ls
timestamps
InquilineKea
fonte
fonte
Respostas:
A maioria dos unices não tem um conceito de hora de criação de arquivo. Você não pode
ls
imprimi-lo porque as informações não estão gravadas. Se você precisar da hora da criação, use um sistema de controle de versão : defina a hora da criação como a hora do check-in.Se sua variante unix tiver um tempo de criação, consulte a documentação. Por exemplo, no Mac OS X (o único exemplo que eu conheço), use
ls -tU
. O Windows também armazena um horário de criação, mas nem sempre é exposto a portas de utilitários unix, por exemplo, o Cygwinls
não tem uma opção para mostrá-lo. Ostat
utilitário pode mostrar a hora da criação, chamada “hora do nascimento” nos utilitários GNU; portanto, no Cygwin, você pode mostrar os arquivos classificados pela hora do nascimentostat -c '%W %n' * | sort -k1n
.Observe que ctime (
ls -lc
) não é o horário de criação do arquivo , é o horário de mudança do inode . O tempo de alteração do inode é atualizado sempre que algo sobre o arquivo é alterado (conteúdo ou metadados), exceto que o ctime não é atualizado quando o arquivo é meramente lido (mesmo que o atime seja atualizado). Em particular, o ctime é sempre mais recente que o mtime (hora da modificação do conteúdo do arquivo), a menos que o mtime tenha sido explicitamente definido como uma data no futuro.fonte
ls -c
.ls --help
mostra o que-c
faz quando combinado com-l
e-lt
.-U
classifica por hora de criação. No Solaris 10.x:/usr/bin/ls
não suporta-U
,/usr/ucb/ls
suporta-U
e classifica por hora de criação. Esses resultados obviamente dependem do sistema de arquivos que armazena essas informações em primeiro lugar.Infelizmente, a
stat(2)
API não fornece uma maneira de obter o tempo de criação do arquivo, pois não é exigida pelos padrões Unix.No entanto, alguns sistemas de arquivos, como
ext4
, salvam essas informações nos metadados do arquivo. Não existe apenas uma maneira padrão de obtê-lo, mas existe uma maneira (ext
apenas sistemas de arquivos):Você obteria algo assim mencionando
crtime
( nãoctime
!) Se você usarext4
.Esse comando pode levar algum tempo para retornar, provavelmente porque também lista todas as extensões relacionadas ao arquivo.
Agora, se você deseja solicitar arquivos pela data de criação, acho que isso não é fácil (nem adequadamente) possível. Como Gilles diz, provavelmente seria mais fácil se você usasse um sistema de controle de revisão. Mas você pode tentar dar uma olhada na
ext4
API ...Eu tentei o
stat -c '%w' myfile
comando em um sistema deext4
arquivos em um sistema Ubuntu (recente o suficiente) sem sucesso (ele apenas responde-
).fonte
f='/path/to/file'; debugfs -R "stat $f" $(df $f|(read a; read a b; echo "$a"))|grep crtime
Aqui está um script Perl que usa a resposta do Totor para alcançar o que você deseja (se o seu sistema de arquivos for ext4).
Funciona na minha máquina doméstica (Ubuntu) e no meu servidor (CentOS), mas não foi testado além disso, então sim.
fonte
Use este comando
ls -lct
para classificar os arquivos conforme a data de criação.fonte
ctime
é tempo de mudança, e não criar tempo.