2 votes

Dans le terminal macOS, puis-je afficher la 'date d'ajout', la date de création et le dernier horodatage d'accès d'un fichier ?

Dans le terminal macOS, quand je fais ls -l SomeFile.txt il affiche la plupart des propriétés du fichier y compris son horodatage de dernière modification.

Cependant dans Finder, en plus de la 'Date de modification' il y a aussi la 'Date d'ajout' pour chaque fichier, c'est-à-dire l'horodatage quand le fichier a été ajouté au dossier particulier où il se trouve. Y a-t-il un moyen de lire ou afficher ceci dans le shell ?

Aussi, autant que j'ai compris cette Date d'Ajout est différente de la date de création du fichier ? Y a-t-il aussi un moyen d'obtenir son horodatage de création ?

Enfin, macOS garde également une trace de quand un fichier a été accédé pour la dernière fois (lu), puis-je obtenir cet horodatage du shell aussi ?

Donc par exemple :

  1. Je crée un nouveau fichier le 1er décembre.
  2. Je modifie le fichier le 2 décembre.
  3. J'ouvre (lis) le fichier le 3 décembre.
  4. Je déplace le fichier vers un dossier différent le 4 décembre.

Je cherche une ou plusieurs commandes shell pour obtenir ces quatre horodatages particuliers.

4voto

Michael Zhou Points 167

La commande mdls (liste de métadonnées) pourrait être ce que vous cherchez.

mdls    -n kMDItemFSName \
        -n kMDItemContentCreationDate \
        -n kMDItemContentModificationDate \
        -n kMDItemDateAdded \
        -n kMDItemUsedDates \
           NOM_DU_FICHIER

2voto

David Anderson Points 30783

Le tableau ci-dessous montre l'attribut de métadonnées qui correspond à la colonne de la vue de liste de l'application Finder. L'attribut de métadonnées peut être passé à la commande mdls pour obtenir la date appropriée. Cependant, la date n'est pas par rapport à l'emplacement actuel.

Colonne de la vue de liste de Finder

Attribut de métadonnées

Date d'ajout

kMDItemDateAdded

Date de création

kMDItemContentCreationDate

Date de dernière ouverture

kMDItemLastUsedDate

Date de modification

kMDItemContentModificationDate

La fonction ci-dessous affiche les dates des applications Finder pour les noms de fichiers donnés en entrée. Les dates sont converties à l'emplacement par défaut de l'ordinateur. Cette fonction a été testée à la fois dans bash et zsh.

dates () {
  local d=() e=0 f="%+" i n x 
  d+=("Date Added=kMDItemDateAdded")
  d+=("Date Creation=kMDItemContentCreationDate")
  d+=("Date Last Opened=kMDItemLastUsedDate")
  d+=("Date Modified=kMDItemContentModificationDate")
  for n; do
    if [[ -e "$n" ]]; then
      printf "Nom: %s\n" "$n"
      for i in "${d[@]}"; do
        x="$(mdls -name "${i#*=}" "$n")"
        if [[ $x == *\(null\) ]]; then
          x="--"
        else
          x="$(date -jf "%Y-%m-%d %H:%M:%S %z" "${x#* = }" +"$f")"
        fi
        printf "%-16s = %s\n" "${i%=*}" "$x"
      done
    else
      printf "dates: %s: Aucun fichier ou dossier de ce type\n" "$n" >&2
      e=1
    fi
  done
  return $e
}

Voici un exemple d'utilisation.

dates x.jpg bad.name mbr.bin

L'exemple de sortie est donné ci-dessous. Notez que le fichier bad.name n'existe pas.

Nom: x.jpg
Date d'ajout       = lun. 11 décembre 11:16:37 CST 2023
Date de création    = lun. 2 octobre 08:48:39 CDT 2023
Date de dernière ouverture = lun. 11 décembre 04:10:54 CST 2023
Date de modification    = lun. 11 décembre 04:21:26 CST 2023
dates: bad.name: Aucun fichier ou dossier de ce type
Nom: mbr.bin
Date d'ajout       = ven. 2 avril 13:16:56 CDT 2021
Date de création    = ven. 2 avril 13:16:56 CDT 2021
Date de dernière ouverture = --
Date de modification    = ven. 2 avril 13:16:56 CDT 2021

Pour obtenir le format des dates exactement comme indiqué dans le Finder sur mon Mac, j'ai dû modifier le format de sortie. En d'autres termes, j'ai dû remplacer f="%+" dans la fonction dates par ce qui suit.

f="%b %-e, %Y à %-l:%M %p"

Le changement de la sortie est montré ci-dessous.

Nom: x.jpg
Date d'ajout       = 11 décembre 2023 à 11:16 AM
Date de création    = 2 octobre 2023 à 8:48 AM
Date de dernière ouverture = 11 décembre 2023 à 4:10 AM
Date de modification    = 11 décembre 2023 à 4:21 AM
dates: bad.name: Aucun fichier ou dossier de ce type
Nom: mbr.bin
Date d'ajout       = 2 avril 2021 à 1:16 PM
Date de création    = 2 avril 2021 à 1:16 PM
Date de dernière ouverture = --
Date de modification    = 2 avril 2021 à 1:16 PM

Remarque : En utilisant Catalina 10.15.7 pour tester sur des volumes APFS, j'ai constaté que la commande mdls peut renvoyer la mauvaise "Date d'ajout" pour les fichiers ayant plus d'un lien physique. En d'autres termes, la commande peut renvoyer la "Date d'ajout" pour un fichier différent lié dur lié au même inode. Cela peut arriver même lorsque l'application Finder affiche la "Date d'ajout" correcte.


Références

0voto

Sreejesh Kumar Points 728

Au moins vous pouvez utiliser POSIX -c ou -u:

-c Utilisez l'heure à laquelle le statut du fichier a été changé pour le tri ou l'impression.
-u Utilisez l'heure du dernier accès, au lieu de l'heure de la dernière modification du fichier pour le tri (-t) ou l'impression longue (-l).

par exemple:

 ls -lc SomeFile.txt
 ls -lu SomeFile.txt

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X