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.

Adnan
la source
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

Rana
la source
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.

Dejan
la source
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

F. Hauri
la source
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,
20

Ajouter:

alias lt='ls -Alhtr'

dans $homedir/.bashrc

Couche 8
la source
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)

Simhumileco
la source
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
pbies
la source
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
lfender6445
la source
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.

barker
la source
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