14 votes

Puis-je lister les fichiers classés par date d'ajout dans un dossier à partir d'un outil en ligne de commande comme ls ?

J'ai besoin de construire un script qui affiche les fichiers dans le même ordre que le dossier Téléchargements par défaut dans le dock, classés par date d'ajout, les plus récents en premier. Je n'arrive pas à trouver l'option dans ls .

Y a-t-il une autre façon de procéder ?

9voto

Mr.Nobody Points 11

Une solution plus simple (plus rapide) :

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

4voto

Oskar Points 1242

La date d'ajout est stockée en tant qu'élément de métadonnées. kMDItemDateAdded et le mdls exposera les données pour chaque fichier qui lui est passé en argument.

Ainsi, pour récupérer la date d'ajout de tous les fichiers de Downloads dans n'importe quel ordre arbitraire * développé par votre shell, vous pouvez :

mdls -name kMDItemDateAdded ~/Downloads/*

Vous devrez bricoler une combinaison de find et sed/awk/perl/quelque chose pour assembler un remplacement de ls mais peut-être que mdfind peut être appelé par votre script plutôt que de devoir réinventer ls et l'analyse de cette sortie.

2voto

pi4t Points 410

Comme d'habitude, après avoir rédigé la question, j'ai commencé à chercher le contenu des métadonnées dans les fichiers, et j'ai fini par écrire ceci :

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

En gros, c'est ça : 1. liste tous les fichiers 2. filtre les fichiers . et . 3. obtient le nom et la date ajoutés, une ligne après l'autre 4. fusionne toutes les deux lignes en 1 ligne 5. extrait la date, l'heure et le nom 6. trie en sens inverse (puisque la date est en tête, il trie par date)

J'espère que cela aidera quelqu'un d'autre ! :)

@bmike en fait, le site m'a imposé une restriction pour répondre à ma propre question seulement après 8 heures de publication de ma question, en raison de mon manque de réputation :D

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X