¿Cómo limitar la salida de ls para mostrar solo el nombre de archivo, la fecha y el tamaño?
25
¿Cómo puedo usar lsen 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.
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
@Sosukudo Sí, tampoco estoy seguro. Pero la gente parece estar de acuerdo en que está bien rechazar las malas preguntas, pero no las respuestas si son útiles. meta.stackexchange.com/questions/98197/…
Jin
@Sosukodo: siéntete libre de votar ahora :)
sehe
66
no es compatible con nombres de archivos con múltiples espacios
meso_2600
12
Técnicamente, no es posible con ls, pero findpuede hacer el mismo trabajo con su -printfinterruptor:
Su sugerencia es mi ganadora, y recomendaría que si las personas están interesadas en más campos para la impresión, hagan RTFM. Por ejemplo, muéstrame los permisos para todos los archivos que no son un directorio: 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 ...
Craig
La pregunta es con respecto a Linux, por lo que no es una respuesta irrazonable, pero para el registro esto requiere encontrar GNU.
Dan Pritts
5
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
$
no funciona con: propietarios variables, grupos, tamaños de archivo
meso_2600
El corte no contrae los delimitadores consecutivos, donde se ls -lusa 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 ' '
Explicación: %y= fecha de modificación legible por humanos;
%s= tamaño en bytes ( %12salineado a la derecha, longitud 12);
%n= nombre del archivo ( %-16nalineado 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, statno 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).
La pregunta era sobre Linux, por lo que su respuesta está bien, pero para cualquiera que le importe, aquí hay un equivalente para la estadística de FreeBSD. stat -f '%N %Sm %z' filename
Respuestas:
ls -l | awk '{print $5, $6, $7, $9}'
Esto imprimirá el tamaño del archivo en bytes, mes, fecha y nombre de archivo.
fuente
Técnicamente, no es posible con
ls
, perofind
puede hacer el mismo trabajo con su-printf
interruptor:fuente
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:
cut
para:fuente
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: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 algunosfind ... -print0 | xargs -r0 stat ...
, por ejemplo).fuente
stat -f '%N %Sm %z' filename
Ligera variación en tolitius
fuente