Dans quel ordre les dates sont-elles commandées? Ordre certainement pas alphanumérique.
ls -lt
trie par heure de modification. Mais j'ai besoin de temps de création.
files
ls
timestamps
InquilineKea
la source
la source
Réponses:
La plupart des ordinateurs n'ont pas de concept de création de fichier. Vous ne pouvez pas faire
ls
imprimer car les informations ne sont pas enregistrées. Si vous avez besoin d’heure de création, utilisez un système de contrôle de version : définissez l’heure de création comme heure d’enregistrement.Si votre variante unix a une heure de création, consultez sa documentation. Par exemple, sur Mac OS X (le seul exemple que je connaisse¹), utilisez
ls -tU
. Windows stocke également une heure de création, mais il n'est pas toujours exposé aux ports des utilitaires Unix, par exemple, Cygwinls
n'a pas l'option de l'afficher. L'stat
utilitaire peut afficher l'heure de création, appelée "heure de naissance" dans les utilitaires GNU. Ainsi, sous Cygwin, vous pouvez afficher les fichiers triés par heure de naissance avecstat -c '%W %n' * | sort -k1n
.Notez que ctime (
ls -lc
) n'est pas l'heure de création du fichier , c'est l' heure de changement d' inode . L'heure de changement d'inode est mise à jour chaque fois que quelque chose concernant le fichier change (contenu ou métadonnées), à l'exception du fait que le temps ctime n'est pas mis à jour lorsque le fichier est simplement lu (même si atime est mis à jour). En particulier, ctime est toujours plus récent que mtime (heure de modification du contenu du fichier), sauf si mtime a été explicitement défini sur une date ultérieure.la source
ls -c
.ls --help
montre ce que-c
fait quand combiné avec-l
et-lt
.-U
trie par heure de création. Sous Solaris 10.x:/usr/bin/ls
ne prend pas en charge-U
,/usr/ucb/ls
prend en charge-U
et trie par date de création. Ces résultats dépendent évidemment du système de fichiers stockant ces informations en premier lieu.Malheureusement, l’
stat(2)
API ne permet pas d’obtenir l’heure de création du fichier, car elle n’est pas exigée par les normes Unix.Cependant, certains systèmes de fichiers, tels que
ext4
, enregistrent ces informations dans les métadonnées du fichier. Il n'y a pas de moyen standard pour l'obtenir, mais il y a un moyen (ext
uniquement avec les systèmes de fichiers):Vous obtiendrez quelque chose comme ça mentionnant
crtime
( pasctime
!) Si vous utilisezext4
.Le retour de cette commande peut prendre un certain temps, probablement parce qu'il répertorie également toutes les extensions liées au fichier.
Maintenant, si vous voulez commander des fichiers par date de création, je suppose que cela n’est pas facilement (ni correctement) possible. Comme Gilles le dit, ce serait probablement plus facile si vous utilisiez un système de contrôle de révision. Mais vous pouvez essayer de regarder l'
ext4
API ...J'ai essayé la
stat -c '%w' myfile
commande sur un système deext4
fichiers sur un système Ubuntu (assez récent) sans succès (il ne fait que répondre-
).la source
f='/path/to/file'; debugfs -R "stat $f" $(df $f|(read a; read a b; echo "$a"))|grep crtime
Voici un script Perl qui utilise la réponse de Totor pour obtenir ce que vous voulez (si votre système de fichiers est ext4).
Fonctionne sur ma machine personnelle (Ubuntu) et mon serveur (CentOS), mais n’a pas été testé au-delà, donc ymmv.
la source
Utilisez cette commande
ls -lct
pour trier les fichiers par date de création.la source
ctime
est changé, et pas créer le temps.