¿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.

Dedo meñique
fuente
¿De qué Linux estamos hablando?
tolitius
servidor apache ..

Respuestas:

26

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
Jin
fuente
@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:

find -maxdepth 1 -printf '%t %s %p\n'
thiton
fuente
1
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

$ 
Tolitius
fuente
44
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 ' '
Dave
4

Otra no lsmanera:

> 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 ( %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).

EndlosSchleife
fuente
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
Dan Pritts
2

Ligera variación en tolitius

ls -lh | cut -f 6- -d ' '
zzapper
fuente
1
¿Te importaría explicar qué agrega la variación?
Ivo Flipse
Simplemente elimina la necesidad de especificar el número del campo final mediante el uso de 6 en lugar de 6-x
zzapper