Comment puis-je lister (ls) les 5 derniers fichiers modifiés dans un répertoire?


138

Je sais ls -tque tous les fichiers seront listés par heure modifiée. Mais comment limiter ces résultats aux n derniers fichiers?


10
Inverser l'ordre ls -lrtpourrait aider quelqu'un.
PJ Brunet

J'adore @PJBrunet. J'ai pris l'habitude de toujours vivre avec tharlcar il a tendance à avoir tout ce dont j'ai besoin.
Adam Grant

Réponses:


246

Essayez d'utiliser la tête ou la queue. Si vous voulez les 5 derniers fichiers modifiés:

ls -1t | head -5

Le -1 (c'est un un) indique un fichier par ligne et la tête dit de prendre les 5 premières entrées.

Si vous voulez les 5 derniers essais

ls -1t | tail -5

2
Si je ne me trompe pas, le shell représente la sortie de lsdans plusieurs colonnes, mais la sortie de lsest redirigée vers la commande suivante avec 1 fichier / répertoire à la fois
Alex

cela semble être le cas. Belle simplification.
Paul Rubel

3
Cela ignore le total au sommet:ls -1t | head -n 6 | tail -n 5
Ryan

1
Je ne vois pas de total, mais s'il y en a un qui fonctionnerait certainement.
Paul Rubel

18

La réponse acceptée répertorie uniquement les noms de fichiers, mais pour obtenir les 5 premiers fichiers, vous pouvez également utiliser:

ls -lht | head -6

où:

-l sorties dans un format de liste

-h rend la sortie lisible par l'homme (c'est-à-dire que la taille des fichiers apparaît en Ko, Mo, etc.)

-t trie la sortie en plaçant le fichier le plus récemment modifié en premier

head -6affichera 5 fichiers car lsimprime la taille du bloc dans la première ligne de sortie.

Je pense que c'est une approche légèrement plus élégante et peut-être plus utile.

Exemple de sortie:

total 26960312 -rw-r--r--@ 1 user staff 1.2K 11 Jan 11:22 phone2.7.py -rw-r--r--@ 1 user staff 2.7M 10 Jan 15:26 03-cookies-1.pdf -rw-r--r--@ 1 user staff 9.2M 9 Jan 16:21 Wk1_sem.pdf -rw-r--r--@ 1 user staff 502K 8 Jan 10:20 lab-01.pdf -rw-rw-rw-@ 1 user staff 2.0M 5 Jan 22:06 0410-1.wmv


12

Utilisez la tailcommande:

ls -t | tail -n 5

Cela donne les 5 plus anciens. Vous devez inverser le tri ( ls -tr) ou utiliser headplutôt que tail, pour obtenir les 5 plus récents.
Headbank le

2

Par défaut, ls -ttrie la sortie de la plus récente à la plus ancienne, de sorte que la combinaison de commandes à utiliser dépend de la direction dans laquelle vous voulez que votre sortie soit ordonnée.

Pour les 5 derniers fichiers classés du plus récent au plus ancien, utilisez headpour prendre les 5 premières lignes de sortie:

ls -t | head -n 5

Pour les 5 derniers fichiers classés du plus ancien au plus récent, utilisez le -rcommutateur pour inverser lsl'ordre de tri de et utilisez tailpour prendre les 5 dernières lignes de sortie:

ls -tr | tail -n 5

1

ls -tliste les fichiers par heure de création, pas de dernière modification À utiliser ls -ltcsi vous souhaitez répertorier les fichiers par date de dernière modification, du dernier au premier (de haut en bas). Ainsi pour lister les n derniers:ls -ltc | head ${n}


1
De quelle plateforme / version parlez-vous? Pouvez-vous fournir un lien? Regarder la page de manuel de Linux donne le contraire de ce que vous déclarez: -t sort by modification time, newest first
Joma
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.