Comment puis-je trier la sortie de 'ls' par date de dernière modification?


Réponses:


1637
ls -t

ou (pour l'inverse, le plus récent en bas):

ls -tr

La lspage de manuel décrit cela plus en détail et répertorie d'autres options.


312
ls -haltest pour human readable, show hidden, print details, sort by date.
— Evgeni Sergeev

6
Au cas où quelqu'un se le demanderait, les arguments -tet -rsont spécifiés dans la section relative lsà la norme POSIX , ils devraient donc être compatibles entre Unices.
— Mark Amery

5
ls -lltpour afficher la date et l'heure avec le tri
— Harshul Pandav

4
Oui c'est possible
— Ashraf.Shk786

6
@EvgeniSergeev DONT MEMORIZE ls -haltun type de type erroné peut entraîner le blocage de votre serveur! linux.die.net/man/8/halt
— Isaac

148

Essayez ceci: ls -ltr. Il vous donnera le récent à la fin de la liste


J'ai utilisé cela pour obtenir la liste des fichiers de mon référentiel Git avant leur dernière date d'édition. ls -alt $(git ls-files -m)Merci!
— NobleUplift

45

Pour une réponse complète, voici ce que j'utilise: ls -lrth

Mettez ceci dans votre script de démarrage /etc/bashrcet attribuez un alias comme celui-ci: alias l='ls -lrth'Redémarrez votre terminal et vous devriez pouvoir taper let voir une longue liste de fichiers.


14
Vous pouvez également appeler source /etc/bashrcsi vous souhaitez l'ajouter à votre répertoire en cours d'exécution.
— cwallenpoole

1
Vous pouvez également l'ajouter ~/.bash_aliasesuniquement à votre utilisateur (vous pouvez créer le fichier s'il n'existe pas déjà
— Dinei

29

J'utilise parfois ceci:

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -tr

ou

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -ltr

rechercher récursivement quels fichiers ont été modifiés au cours des 5 dernières minutes.

... ou maintenant, avec la version récente de GNU find :

find . -type f -mmin -5 -exec ls -ltr {} +

... et même pour ne pas limiter aux fichiers :

find . -mmin -5 -exec ls -ltrd {} +

(notez le -dpassage à lspour ne pas afficher le contenu des répertoires)

Manière plus robuste?

Jetez un coup d’œil à mon répondeur pour trouver et trier par date de modification


Récursivement, vous voulez dire qu’il répertorie tous les fichiers des sous-répertoires, ne dispose-t-il pas déjà d’un commutateur pour le faire?
— jiggunjer

@jiggunjer ls -Rltrva trier par répertoire , puis par date, find -type f -mmin -5 -exec ls -ltr {} +il ne fera qu'imprimer les fichiers modifiés au cours des 5 dernières minutes, triés par date, quelle que soit l'arborescence!
— F. Hauri

Notez que cela ne fonctionnera pas si la liste de fichiers est trop longue pour être transmise en tant qu’invocation de shell à ls( unix.stackexchange.com/a/118200/27186 ). Dans ce cas, vous verrez un groupe de fichiers trié, puis un autre. tas de fichiers triés, etc., mais toute la liste ne sera pas triée. Voir superuser.com/questions/294161/… pour trier des listes plus longues avec find.
— Unhammer

@unhammer Vous avez raison, pour que cela fonctionne en toute sécurité, consultez ma récente réponse à Unix / Linux: rechercher et trier par date de modification
— F. Hauri,


15

Mnémonique

Pour ne pas ignorer les entrées commençant par .et trier par date (la plus récente en premier):

ls -at

Pour ne pas ignorer les entrées commençant par .et inverser le tri par date (le plus ancien en premier):

ls -art

Pour ne pas ignorer les entrées commençant par ., utilisez un format de liste longue et triez par date (le plus récent en premier):

ls -alt

Pour les formats d'impression lisibles par l'homme, n'ignorez pas les entrées commençant par ., utilisez un format de liste long et triez par date (la plus récente en premier) (@EvgeniSergeev note):

ls -halt

mais soyez prudent avec le dernier , car un simple type d'erreur peut provoquer un crash du serveur ... (note @ Isaac)


14

Trouvez tous les fichiers du système de fichiers qui ont été modifiés au maximum il y a 3 * 24 heures (3 jours) jusqu'à maintenant:

find / -ctime 3

10

Pour afficher les 10 derniers triés par date, j'utilise quelque chose comme ceci:

ls -t ~/Downloads | head -10

ou pour montrer le plus vieux

ls -tr ~/Downloads | tail -10

il donne ls -t head -2et ls -tr | tail -2donne le même résultat, l'option (-t / -tr) doit rester fixe et modifier le verset queue / tête ou vice-versa, modifier les deux revient à ne rien modifier
— DDS

7

En utilisant uniquement des commandes Unix très basiques:

ls -nl | sort -k 8,8n -k 6,6M

Cela a fonctionné sous Linux; la colonne 8 est "n" (numérique), la colonne 6 est "M", mois.

Je suis nouveau à sort, alors cette réponse pourrait probablement être améliorée. Sans parler, il a besoin d' options supplémentaires lset sortd'utiliser horodatages exact, mais pas tout le monde aura besoin de cela.


5
Je soupçonne que votre réponse n’a obtenu aucun vote positif, car elle analyse la sortie de ls - voir l’argument canonique contre cette affirmation et cette question sur le fait de ne pas analyser ls
— Eponymous
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.