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

9

Necesito crear una secuencia de comandos que muestre los archivos en el mismo orden que la carpeta de Descargas predeterminada en el dock, ordenada por Fecha de adición, la más reciente primero. Parece que no puedo encontrar la opción en ls .

¿Alguna otra forma de hacerlo?

    
pregunta Ramiro Araujo 21.03.2013 - 17:21

4 respuestas

5

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

mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort
    
respondido por el Jose Alban 01.08.2015 - 15:36
4

La fecha agregada se almacena como elemento de metadatos kMDItemDateAdded y el comando mdls expondrá los datos de cada archivo pasado como un argumento para ello.

Por lo tanto, para volcar la fecha agregada para todos los archivos en Descargas en cualquier orden arbitrario * que tu shell expanda, puedes:

  

mdls -name kMDItemDateAdded ~ / Downloads / *

Tendrá que juntar una combinación de encontrar y sed / awk / perl / lo que sea para ensamblar un reemplazo para ls , pero quizás su script pueda invocar a mdfind en lugar de reinventar ls y analizar eso salida.

    
respondido por el bmike 21.03.2013 - 18:57
2

Bueno, como de costumbre, después de escribir la pregunta, comencé a buscar contenido de metadatos en 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 es: 1. listar todos los archivos 2. filtra hacia fuera. y .. 3. obtiene el nombre y la fecha agregados, una línea después de la otra 4. fusiona cada dos líneas en 1 línea 5. Extrae la fecha, hora y nombre. 6. lo ordena a la inversa (ya que datetime es inicial, se ordena por datetime)

Espero que ayude a alguien más! :)

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

    
respondido por el Ramiro Araujo 22.03.2013 - 03:56
0
  

man ls

 -U      Use time of file creation, instead of last modification for
         sorting (-t) or long output (-l).
    
respondido por el Jason 21.03.2013 - 17:59

Lea otras preguntas en las etiquetas