¿Cómo puedo usar ls
en Linux para obtener una lista de nombres de archivos de fecha y tamaño solamente? No necesito ver otra información como el propietario, el permiso.
¿Cómo puedo usar ls
en Linux para obtener una lista de nombres de archivos de fecha y tamaño solamente? No necesito ver otra información como el propietario, el permiso.
Respuestas:
ls -l | awk '{print $5, $6, $7, $9}'
Esto imprimirá el tamaño del archivo en bytes, mes, fecha y nombre de archivo.
jin@encrypt /tmp/foo % ls -l
total 0
drwxr-xr-x 2 jin wheel 68 Oct 4 12:43 bar
drwxr-xr-x 2 jin wheel 68 Oct 4 12:43 baz
drwxr-xr-x 2 jin wheel 68 Oct 4 12:43 quux
jin@encrypt /tmp/foo % ls -l | awk '{print $5, $6, $7, $9}'
68 Oct 4 bar
68 Oct 4 baz
68 Oct 4 quux
Técnicamente, no es posible con ls
, pero find
puede hacer el mismo trabajo con su -printf
interruptor:
find -maxdepth 1 -printf '%t %s %p\n'
find usr/lib/ -not -type d -printf '%M %p\n
salida: -rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so
... Enseña a un hombre a pescar y todo eso ...
siempre puedes hacer:
$ ls -l
total 0
-rw-r--r-- 1 user staff 0 Oct 6 23:29 file1
-rw-r--r-- 1 user staff 0 Oct 6 23:29 file2
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file3
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file4
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file5
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file6
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file7
cut
para:
$ ls -l | cut -f 8-13 -d ' '
0 Oct 6 23:29 file1
0 Oct 6 23:29 file2
0 Oct 6 23:30 file3
0 Oct 6 23:30 file4
0 Oct 6 23:30 file5
0 Oct 6 23:30 file6
0 Oct 6 23:30 file7
$
ls -l
usa el relleno de espacios en blanco. Si sus columnas no tienen una longitud uniforme (qué columna 5, el tamaño del archivo a menudo no lo hará), cortar no seleccionará las columnas correctamente. Ayudará a contraer espacios consecutivos (tenga cuidado con los espacios en los nombres de archivo). ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Otra no ls
manera:
> stat --printf='%y\t%12s\t%-16n|\n' tmp.*
2017-06-15 10:42:07.252853000 +0200 10485760 tmp.1 |
2017-06-15 10:41:25.659570000 +0200 666 tmp.TKPzm3BfRw |
Explicación: %y
= fecha de modificación legible por humanos;
%s
= tamaño en bytes ( %12s
alineado a la derecha, longitud 12);
%n
= nombre del archivo ( %-16n
alineado a la izquierda, longitud 16); \t
= pestaña, \n
= salto de línea. |
= literal pipe char, solo para mostrar el final del nombre del archivo.
Al igual que ls
, stat
no tiene opciones para seleccionar qué archivos mostrar. (Eso se puede hacer mediante un globo de concha como se muestra arriba o algunos find ... -print0 | xargs -r0 stat ...
, por ejemplo).
stat -f '%N %Sm %z' filename
Ligera variación en tolitius
ls -lh | cut -f 6- -d ' '