12 votos

¿Puedo listar los archivos ordenados por fecha de adición a una carpeta desde una herramienta de línea de comandos como ls?

Necesito construir un script que muestre los archivos en el mismo orden que la carpeta de Descargas por defecto en el dock, ordenados por Fecha de Alta, el más nuevo primero. Parece que no puedo encontrar la opción en ls .

¿Alguna otra forma de hacerlo?

0 votos

Mostrarlo donde ?

0 votos

¡Línea de comandos! ¡Lo tengo! Terminé escribiendo una línea de comandos que hace el truco. Como no tengo mucha reputación, no puedo responder a mi propia pregunta todavía, lo haré más tarde.

0 votos

Bienvenido al sitio Ramiro - deberías poder responder a tu propia pregunta en cualquier momento - pero habrá una restricción para que puedas "marcar como aceptada" tu respuesta. Siéntete libre de editar mi respuesta para adaptarla a tus necesidades o proporcionar tu propia respuesta si/cuando quieras.

7voto

Jose Alban Puntos 136

Solución más sencilla (más rápida):

mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort

1 votos

Sí, mucho mejor :)

1 votos

¿Podría alguien detallar qué hace cada una de esas líneas? Además, ¿se puede realizar esta solución en Terminal como líneas de comando individuales (secuencialmente, una tras otra), o sólo dentro de un script?

1 votos

Línea 1: mdls es la herramienta de lista de metadatos de Mac. Escriba man mdls para la documentación. Esto no funciona en otras angustias de Linux. Hay muchas claves de metadatos. Las banderas de -nombre eligen sólo las dos que queremos, el nombre del archivo y su fecha añadida. La bandera -raw separa los valores devueltos con un carácter nulo. La estrella lista todos los archivos. Se sustituye el directorio y cualquier otro filtro glob que se desee. La tubería da salida al siguiente comando. Es decir, se trata de un solo comando. Usted puede hacer esto interactivamente en la terminal. Si quiere hacerlo individualmente, puede enviar cada paso a un archivo.

4voto

Oskar Puntos 1242

La fecha añadida se almacena como elemento de metadatos kMDItemDateAdded y el mdls expondrá los datos de cada archivo que se le pase como argumento.

Así que, para volcar la fecha añadida para todos los archivos en Descargas en cualquier orden arbitrario * que sea expandido por su shell, puede:

mdls -name kMDItemDateAdded ~/Downloads/*

Tendrás que hacer alguna combinación de find y sed/awk/perl/lo que sea para armar un reemplazo para ls pero tal vez mdfind puede ser llamado por su script en lugar de tener que reinventar ls y el análisis de esa salida.

1 votos

Sí, lo encontré más tarde e hice un hermoso forro que me enseñó muchas cosas :) Gracias por la ayuda

2 votos

Pegue esa línea editando mi respuesta - ¡comparta el conocimiento!

2voto

Ramiro Araujo Puntos 148

Bueno, como siempre, después de escribir la pregunta me pongo a indagar sobre el contenido de los metadatos en los archivos, y terminé escribiendo esto:

ls -a | \
grep -v '^\.$\|^\.\.$' | \
xargs -I {} mdls -name kMDItemFSName -name kMDItemDateAdded {} | \
sed 'N;s/\n//' | grep -v '(null)' | \
awk '{print $3 " " $4 " " substr($0,index($0,$7))}' | \
sort -r

Básicamente: 1. lista todos los archivos 2. filtra los archivos . y .. 3. obtiene el nombre y la fecha añadidos, una línea tras otra 4. fusiona cada dos líneas en una línea 5. extrae la fecha, la hora y el nombre 6. lo ordena en sentido inverso (como la fecha está por delante, lo ordena por fecha)

¡Espero que ayude a alguien más! :)

@bmike en realidad, el sitio me impuso una restricción para responder a mi propia pregunta sólo después de 8 horas de publicar mi pregunta, debido a mi falta de reputación :D

0 votos

Oh, he dividido la línea en varias líneas para mayor claridad :)

1 votos

Utilice ls -A en lugar de -a para no tener que grep -v para . y .. .

0voto

Darc Puntos 106

hombre ls

 -U      Use time of file creation, instead of last modification for
         sorting (-t) or long output (-l).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X