¿Por qué "ls -all" muestra el time para algunos files pero solo el año para otros?

Si emite ls -all commands, algunos files o directorys tienen el año y algunos tienen el time? ¿Por qué algunos muestran el año mientras otros muestran el time? ¿Es la hora representativa de la hora en que se creó el file?

enter image description here

De forma pnetworkingeterminada, las marcas de time de los files aparecen en forma abreviada, usando una date como 'Mar 30 2002' para marcas de time no recientes, y una date sin año y una hora como 'Mar 30 23:45' para las marcas de time recientes. Este formatting puede cambiar dependiendo de la configuration regional actual como se detalla a continuación.

Se considera que una timestamp es reciente si tiene less de seis meses y no tiene date en el futuro. Si una marca de date de hoy no está en la list de forma reciente, la date y hora está en el futuro, lo que significa que probablemente tenga problemas de reloj que pueden interrumpir progtwigs como los que se basan en las marcas de time de files.

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

Para ilustrar:

 $ 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 

El time representado es el time de modificación. Tenga en count que ls -all es lo mismo que ls -l -a , que es diferente de ls --all . No hay ninguna razón para usar double l en tu ejemplo. Si desea ver el time de modificación para cada file, puede usar ls -al --full-time .

Si la date / hora que intenta mostrar es en los últimos seis meses, muestra la date y la hora. Si ha pasado más de seis meses, o si es en el futuro, muestra la date y el año.

Como se indica en las otras respuestas,

  • ls -ll es equivalente a ls -l , y
  • ls -all es equivalente a ls -al , que es equivalente a ls -a -l , ls -l -a , y ls -la .

Con la opción -l , ls muestra la date / hora de modificación de los files (incluidos los directorys, ya que "todo es un file"), a less que

  • -c también se especifica, en cuyo caso muestra el time de cambio, o
  • -u también se especifica, en cuyo caso muestra el time de acceso.

Ver ls (1) para más información.

Este resultado está ajustado para get el máximo contenido de información: cuando el time es "lo suficientemente cercano" a la hora actual (no del todo seguro, pero supongo que dentro de los seis meses) se elimina el año y se muestra la hora del día. De lo contrario, se muestra el año. Este es el valor pnetworkingeterminado más que nada porque es probable que no le importe tanto la hora exacta del día en que se modificó algo, si ese momento es hace años. GNU coreutils ls tiene la opción --time-style , para controlar esto de forma explícita.

¿Te has dado count de algo? Solo aparece la hora del 20 de octubre, que es hoy, lo que significa que se mostrará la última vez que modificó el file, pero en otros días que no sean hoy, solo mostrará la date sin el time.

Resulta que no es esto, como respondió Thomas. Solo traté de usar el método de deducción, no estoy seguro de tener una conclusión correcta después de todo.