Si emite el ls -all
comando, ¿algunos archivos o directorios tienen el año y otros tienen el tiempo? ¿Por qué algunos muestran el año mientras que otros muestran la hora? ¿Es el tiempo representativo del momento en que se creó el archivo?
Si emite el ls -all
comando, ¿algunos archivos o directorios tienen el año y otros tienen el tiempo? ¿Por qué algunos muestran el año mientras que otros muestran la hora? ¿Es el tiempo representativo del momento en que se creó el archivo?
Respuestas:
De manera predeterminada, las marcas de tiempo del archivo se enumeran en forma abreviada, utilizando una fecha como '30 de marzo de 2002' para marcas de tiempo no recientes y una fecha sin año y hora como '30 de marzo 23:45' para marcas de tiempo recientes. Este formato puede cambiar según la configuración regional actual como se detalla a continuación.
Una marca de tiempo se considera reciente si tiene menos de seis meses y no tiene fecha en el futuro. Si una marca de tiempo con fecha de hoy no figura en la lista en forma reciente, la marca de tiempo está en el futuro, lo que significa que probablemente tenga problemas de sesgo de reloj que pueden interrumpir programas como hacer que dependan de marcas de tiempo de archivo.
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 tiempo representado es el tiempo de modificación. Tenga en cuenta que ls -all
es lo mismo que ls -l -a
, que es diferente de ls --all
. No hay razón para usar double l
en su ejemplo. Si desea ver el tiempo de modificación para cada archivo, puede usarlo ls -al --full-time
.
ls
para uso normal --time-style=long-iso
podría ser más útil. --full-time
muestra segundos incluyendo nueve cifras (!) después del punto decimal que normalmente no es necesario.
--full-time
implica -l
, por lo que podría usar ls -a --full-time
.
Si la fecha / hora que está tratando de mostrar es en los últimos seis meses,
ls
muestra la fecha y la hora. Si hace más de seis meses, o si es en el futuro, ls
muestra la fecha y el año.
Como se indica en las otras respuestas,
ls -ll
es equivalente a ls -l
yls -all
es equivalente a ls -al
, que es equivalente a ls -a -l
, ls -l -a
, y ls -la
.Con la -l
opción, ls
muestra la fecha / hora de modificación de los archivos (incluidos los directorios, ya que "todo es un archivo"), a menos que
-c
también se especifica, en cuyo caso muestra el tiempo de cambio, o-u
también se especifica, en cuyo caso muestra el tiempo de acceso.Ver ls (1) para más información.
Esta salida está ajustada para el contenido máximo de información: cuando la hora está "lo suficientemente cerca" de la hora actual (no del todo seguro, pero supongo que dentro de los seis meses) se elude el año y se muestra la hora del día. De lo contrario, se muestra el año. Este es el valor predeterminado principalmente porque es probable que no le importe tanto la hora exacta del día en que se modificó algo, si esa hora es hace años. GNU coreutils ls
tiene la --time-style
opción de controlar esto explícitamente.
¿Te has dado cuenta de algo? Simplemente aparece la hora del 20 de octubre, que es hoy, lo que significa que mostrará la última vez que modificó el archivo, pero, en otros días que no son hoy, solo mostrará la fecha sin la hora.
Resulta que no es esto, como respondió Thomas. Solo intenté usar el método de deducción, no estoy seguro de tener una conclusión correcta después de todo.
Aug 6 19:50 .config
, Aug 6 19:48 VNCHOWTO
.
-all
. Tenga en cuenta que la última L es superflua, porqueall
no significa la palabra "todos" sino "-a
mostrar todos los archivos" y-l
(formato de listado largo). Todo junto,ls -al
es lo mismo que estás usando.