¿Cómo puedo usar ls
en Linux para obtener una lista de nombres de archivos de fecha y tamaño solamente? No necesito ver la otra información, como el propietario o el permiso. es posible?
¿Cómo puedo usar ls
en Linux para obtener una lista de nombres de archivos de fecha y tamaño solamente? No necesito ver la otra información, como el propietario o el permiso. es posible?
Respuestas:
¿Por qué no usar en stat
lugar de ls
?
stat -c "%y %s %n" *
find . -type f -print0 | xargs -0 stat -c "%y %s %n"
stat
, puede agregar información de ancho a la cadena de formato como la función C printf, por ejemplo "%y %8s %n"
, no está documentada, pero parece funcionar (coreutils 8.17, Fedora 18)
ls
puedo emitirlo con un mil separador de caracteres. ¿Cómo funciona stat
?
ls
. ¿Qué pasa con los colores?
Puede obtener mucho control sobre cómo enumera los archivos con la find
utilidad. ls
realmente no te permite especificar las columnas que deseas.
Por ejemplo:
$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601 4096 .
20111007.0601 2 b
20111001.1322 4096 a
El argumento de la printf
acción se detalla en la página de manual. Puede elegir información de tiempo diferente, qué tamaño desea (tamaño de archivo o bloques de disco utilizados), etc. También puede hacer esto seguro para nombres de archivo inusuales si se necesita un procesamiento adicional.
%C+
(salida "2016-08-29 + 10: 57: 56.9201257840") y %Cc
(salida "Mo 29 Aug 2016 10:57:56 CEST")
Siempre puede usar otra utilidad como awk
formatear la salida de ls
1 :
/bin/ls -ls | awk '{print $7,$8,$9}'
1.Sí, en general, no debe analizar la salida de ls, pero en este caso la pregunta lo requiere específicamente ...
ls
tiene un alias (por ejemplo alias ls='ls -i'
). Realmente debe tener mucho cuidado si desea analizar la salida de ls.
ls
, pero eso es lo que el OP quería ...
/bin/ls
evitaría el problema del alias)
ls
que ambos acordamos que no va a satisfacer el requisito de espacio en blanco. La /bin/ls
sugerencia es buena.
-h
para que sea legible para los humanos. Específicamente utilicé: ls -lah | awk '{print $5,$6,$7,$8}'
que produce: 4.0K Jan 24 18:17
. Por supuesto, la solución original no dice nada acerca de awk, pero en Linux debemos asumir que la salida de un proceso siempre será la entrada a otro proceso, ¿verdad? ;)
También puede usar el comando 'fecha'. Es muy fácil de usar:
fecha -r [nombre del archivo]
date -r foo*.txt
->date: extra operand "foo2.txt"
donde el espacio se define como el separador y f6 significa campo 6
ls -lt | cut -d" " -f6-
Puedes canalizar dos comandos
ls -l|cut -d" " -f5
ls
es genial porque tiene una clasificación muy rápida por fecha y hora, pero el formato es difícil de manejar. Sugiero usar un token en --time-style, como--time-style='+&%Y%m%d+%H%M%S.%N'
donde el token es '&', y usarlo como referencia puede analizar aún más la salidased
para que también pueda retroceder, ¡justo antes de que el token tenga el tamaño! Si alguien quiere publicar eso como una respuesta completa, siéntase libre de hacerlo, estoy demasiado dormido en este momento :)