Necesito crear una secuencia de comandos que muestre los archivos en el mismo orden que la carpeta Descargas predeterminada en el Dock, ordenados por Fecha de adición, primero los más nuevos. Parece que no puedo encontrar la opción en ls
.
¿Alguna otra forma de hacerlo?
Solución más simple (más rápida):
mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort
La fecha agregada se almacena como elemento de metadatos kMDItemDateAdded
y el mdls
comando expondrá los datos de cada archivo pasado como argumento.
Por lo tanto, para volcar la fecha agregada para todos los archivos en Descargas en cualquier orden arbitrario * expandido por su shell, puede:
mdls -name kMDItemDateAdded ~/Descargas/*
Necesitará combinar alguna combinación de find y sed/awk/perl/lo que sea para ensamblar un reemplazo, ls
pero tal vez su secuencia de comandos pueda llamar a mdfind en lugar de tener que reinventar ls
y analizar esa salida.
Bueno, como de costumbre, después de escribir la pregunta, comencé a buscar contenido de 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. enumera todos los archivos 2. filtra. 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, la hora y el nombre 6. lo ordena a la inversa (dado que la fecha y hora es inicial, se ordena por fecha y hora)
¡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 haber publicado mi pregunta, debido a mi falta de reputación :D
ls -A
en lugar de -a
para no tener que usar grep -v
for .
y ..
.
Robar
Ramiro Araújo
bmike