Comment puis-je obtenir l'âge d'un fichier donné en au moins quelques jours?
Je connais bien ls -lh
les commandes similaires. Je veux quelque chose qui fonctionnera un peu comme ceci:
getfage <FILE> # prints out '12d' (12 days)
En outre, cela doit être quelque peu multiplateforme, car j'aimerais également l'utiliser sous Mac OS X, mais le cas d'utilisation principal est sur ma Linux-box.
REMARQUE
Puisque Linux ne suit pas le temps de création, je recherche une solution double: une pour mtime (linux) - c'est la dernière fois que ledit fichier a été modifié - et une pour Mac OS X, qui peut soit gérer mtime ou temps de création.
command-line
files
timestamps
Alexej Magura
la source
la source
stat
vous donne tout ce dont vous avez besoin?Réponses:
Unix ne garde pas une date de création. Les seules informations disponibles sont généralement les dernières fois où les fichiers ont été:
( De cette réponse )
Vous pouvez obtenir des dates liées à un fichier particulier à l'aide de la
stat
commande.Exemple
OSX et HFS
Si vous utilisez OSX, le système de fichiers utilisé sous Unix est HFS . C'est l'un des rares (à ma connaissance) qui conserve la date de création dans le système de fichiers, ainsi que l'heure de modification, etc. similaires aux autres Unix.
extrait
Horodatages
Les horodatages sont toujours conservés dans le système de fichiers, vous êtes donc limité par le suivi du temps qui leur est proposé (EXT3, EXT4, XFS, etc.).
Systèmes de fichiers
Si vous êtes curieux, jetez un œil à ce sujet de Wikipédia intitulé: Comparaison des systèmes de fichiers . Il contient la liste la plus complète de systèmes de fichiers que je connaisse, ainsi qu'un joli tableau des différentes fonctionnalités et l'état de leur prise en charge ou non dans un système de fichiers donné.
Les références
la source
OSX garde une trace de la création de fichiers, mais la plupart des autres unités ne le font pas, il n'y a donc aucun moyen de connaître le temps écoulé depuis la création du fichier. Vous pouvez obtenir le temps écoulé depuis sa dernière modification sur à peu près n'importe quel système d'exploitation.
Il n'y a pas d'utilitaire de shell portable pour récupérer l'heure de modification d'un fichier, sauf celui
ls
dont la sortie est presque impossible à analyser. Sous Linux, la commande suivante imprime l'âge d'un fichier:Sous Linux, vous pouvez utiliser
stat -c %Y -- "$filename"
comme synonyme dedate +%s -r "$filename"
.Les OSX
date
et lesstat
commandes sont différents. Vous pouvez utiliser la commande suivante:Perl est installé par défaut sur les systèmes Linux non intégrés et OSX.
la source
stat
, sous Linux, le syscall n'a pas été retravaillé, vous devez donc recourir au piratage avecdebugfs
.Basé sur la réponse de Gilles, voici une fonction bash qui retourne l'âge du fichier en secondes ou erreur.
la source
Vous pouvez utiliser
stat -f%B
,,ls -lU
oumdls -n kMDItemFSCreationDate
pour voir l'heure de création (naissance) dans OS X:la source
regarder
man stat
pour les-c
options (format)la source