Pourquoi «ls -all» affiche-t-il l'heure pour certains fichiers mais seulement l'année pour d'autres?


32

Si vous lancez la ls -allcommande, certains fichiers ou répertoires ont l'année et certains ont le temps? Pourquoi certains montrent l'année tandis que d'autres indiquent l'heure? L'heure est-elle représentative de l'heure de création du fichier?

entrez la description de l'image ici


15
Vous utilisez -all. Notez que le dernier L est superflu, car allil ne représente pas le mot «tous» mais pour -a(afficher tous les fichiers) et -l(format de liste longue). Tous ensemble, ls -alc'est la même chose que ce que vous utilisez.
fedorqui

Réponses:


35

Par défaut, les horodatages des fichiers sont répertoriés sous forme abrégée, en utilisant une date comme '30 mars 2002' pour les horodatages non récents, et une date sans année et une heure comme '30 mars 23:45' pour les horodatages récents. Ce format peut changer en fonction des paramètres régionaux actuels, comme indiqué ci-dessous.

Un horodatage est considéré comme récent s'il a moins de six mois et n'est pas daté à l'avenir. Si un horodatage daté d'aujourd'hui n'est pas répertorié sous une forme récente, l'horodatage est dans le futur, ce qui signifie que vous avez probablement des problèmes de décalage d'horloge qui peuvent casser des programmes comme make qui reposent sur des horodatages de fichiers.

Source: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps

Pour illustrer:

$ for i in {1..7}; do touch -d "$i months ago" file$i; done
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Sep 21 02:38 file1
-rw-r--r-- 1 terdon terdon 0 Aug 21 02:38 file2
-rw-r--r-- 1 terdon terdon 0 Jul 21 02:38 file3
-rw-r--r-- 1 terdon terdon 0 Jun 21 02:38 file4
-rw-r--r-- 1 terdon terdon 0 May 21 02:38 file5
-rw-r--r-- 1 terdon terdon 0 Apr 21  2015 file6
-rw-r--r-- 1 terdon terdon 0 Mar 21  2015 file7

4
Il convient de noter que les temps à l'avenir indiqueront également l'année plutôt que le temps. Cela peut se produire si vous échangez des fichiers entre des hôtes où l'horloge n'est pas synchronisée.
kasperd

24

L'heure représentée est l'heure de modification. Veuillez noter que ls -allc'est la même chose que ls -l -a, ce qui est différent de ls --all. Il n'y a aucune raison d'utiliser le double ldans votre exemple. Si vous souhaitez voir l'heure de modification de chaque fichier, vous pouvez utiliser ls -al --full-time.


4
Dans GNU lspour une utilisation normale --time-style=long-isopourrait être plus utile. --full-timeaffiche les secondes, y compris neuf chiffres (!) après le point décimal qui n'est normalement pas nécessaire.
pabouk

1
--full-timeimplique -l, vous pouvez donc simplement utiliser ls -a --full-time.
kasperd du

6

Si la date / l'heure qu'il essaie d'afficher se situe au cours des six derniers mois, lsaffiche la date et l'heure. Si elle remonte à plus de six mois - ou si elle se situe dans le futur - lsaffiche la date et l'année.

Comme indiqué dans les autres réponses,

  • ls -llest équivalent à ls -l, et
  • ls -allest équivalent à ls -al, ce qui est équivalent à ls -a -l, ls -l -aet ls -la.

Avec l' -loption, lsaffiche la date / heure de modification des fichiers (y compris les répertoires, car "tout est un fichier"), sauf si

  • -c est également spécifié, auquel cas il affiche l'heure de changement, ou
  • -u est également spécifié, auquel cas il affiche le temps d'accès.

Voir ls (1) pour plus d'informations.


3

Cette sortie est réglée pour un contenu d'information maximal: lorsque l'heure est "assez proche" de l'heure actuelle (pas tout à fait sûr, mais je suppose que dans les six mois), l'année est éluée et l'heure de la journée affichée à la place. Sinon, l'année est affichée. C'est la valeur par défaut, principalement parce que vous ne vous souciez probablement pas autant de l'heure précise à laquelle quelque chose a été modifié, si cette heure est antérieure à plusieurs années. GNU coreutils lsa la --time-stylepossibilité de contrôler cela explicitement.


0

Avez-vous réalisé quelque chose? Il apparaît simplement l'heure du 20 octobre, c'est-à-dire aujourd'hui, cela signifie qu'il affichera la dernière fois que vous avez modifié le fichier, mais, dans les autres jours qui ne sont pas aujourd'hui, il affichera uniquement la date sans l'heure.

Il s'avère que ce n'est pas cela, comme l'a répondu Thomas. J'ai juste essayé d'utiliser la méthode de la déduction, je ne suis pas sûr d'avoir une conclusion correcte après tout.


1
Aug 6 19:50 .config, Aug 6 19:48 VNCHOWTO.
G-Man dit `` Réintègre Monica ''

Parfait, je viens de faire une déduction en regardant les dates et en reliant les points, ce qui ne peut pas toujours être une conclusion parfaite.
Rafael Campos Nunes
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.