Je sais juste que ls -t
et ls -f
donne un tri différent des fichiers et des sous-répertoires dans un répertoire.
Par exemple, j'ai vu quelqu'un écrire:
Par défaut, le programme rsync cherche uniquement à voir si les fichiers sont de taille et d'horodatage différents. Peu importe le fichier le plus récent, s'il est différent, il est remplacé. Vous pouvez passer l'indicateur '--update' à rsync, ce qui lui fera sauter des fichiers sur la destination s'ils sont plus récents que le fichier sur la source, mais seulement tant qu'ils sont du même type de fichier. Cela signifie que si, par exemple, le fichier source est un fichier normal et la destination est un lien symbolique, le fichier de destination sera écrasé, quel que soit l'horodatage.
Sur une note latérale, le type de fichier ici signifie-t-il uniquement un fichier ordinaire et un lien sim, pas le type tel que pdf, jpg, htm, txt, etc.?
Il existe 3 types de "timestamps":
Pour afficher ces informations, vous pouvez utiliser stat
qui fait partie des coreutils.
stat
vous montrera également quelques informations supplémentaires comme le périphérique, les inodes, les liens, etc.
N'oubliez pas que ce type d'informations dépend fortement du système de fichiers et des options de montage. Par exemple, si vous montez une partition avec l'option noatime
, aucune information d'accès ne sera écrite.
Un utilitaire pour modifier les horodatages serait touch
. Il existe des arguments pour décider de l'horodatage à modifier (par exemple -a pour le temps d'accès, -m pour l'heure de modification) et pour influencer l'analyse d'un nouvel horodatage donné. Voir man touch
pour plus de détails.
touch
peut devenir pratique en combinaison avec cp -u
( "copier uniquement lorsque le fichier SOURCE est plus récent que le fichier de destination ou lorsque le fichier de destination est manquant" ) ou pour la création d'un marqueur vide des dossiers.
La réponse de echox est valide mais je veux ajouter des informations concernant l'heure de création du fichier.
Certains systèmes de fichiers prennent en charge une entrée supplémentaire dans l'inode concernant l'heure de création (ou l'heure de naissance). Je sais que ext4 prend en charge cette fonctionnalité et aussi JFS et BTRFS .
Cependant, la plupart des outils et API n'ont pas encore été mis à jour pour lire ces informations supplémentaires. Donc, même s'il pourrait être là, il n'est pas accessible.
Par exemple, sur Ubuntu 12.04 LTS, j'obtiens ce qui suit pour un fichier que j'ai créé aujourd'hui:
$ echo Just another test > /tmp/mytest
$ sleep 3
$ touch /tmp/mytest
$ sleep 2
$ cat /tmp/mytest > /dev/null
$ stat /tmp/mytest
[...]
Access: 2012-06-05 13:33:44.279774711 +0200
Modify: 2012-06-05 13:33:34.611893317 +0200
Change: 2012-06-05 13:33:34.611893317 +0200
Birth: -
$ Sudo debugfs -R 'stat /tmp/mytest' /dev/sda1
[...]
ctime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012
atime: 0x4fcdee98:42b417dc -- Tue Jun 5 13:33:44 2012
mtime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012
crtime: 0x4fcdee46:01258f1c -- Tue Jun 5 13:32:22 2012
[...]
Vous pouvez voir que la nouvelle fonction stat a un champ de naissance, bien que la sortie semble incorrecte. Et via debugfs, nous pouvons obtenir les informations (crtime car je suis sur le système de fichiers ext4).
Il y a maintenant depuis le noyau 4.11 un nouvel appel système statx , en plus d'une meilleure prise en charge de Y2038 ou des systèmes de fichiers réseau, il apporte également quelques fonctionnalités supplémentaires comme btime
ou l'heure de naissance ( création) accès. La prise en charge d'ext4 devrait être dans la même version du noyau 4.11.
Des correctifs ont été ajoutés pour prendre en charge ce nouveau syscall dans les versions ultérieures du noyau: par ex. BTRFS et F2FS dans le noyau 4.13, SMB3 dans 4.14, GFS2 dans 4.15, NFS dans 4.16, etc.
La prochaine glibc fournira un appel de fonction pour interroger cette interface (voir Phoronix news about glibc statx support ). Nous pouvons donc nous attendre à une prise en charge de cette fonctionnalité dans l'espace utilisateur très bientôt.