Recherche de site Web

Rechercher le fichier le plus ancien dans une arborescence de répertoires sous Linux


L'autre jour, un autre utilisateur de Linux m'a demandé comment trouver le fichier le plus ancien d'un répertoire à partir de la ligne de commande sous Linux. Nous pourrions identifier le fichier le plus ancien d'un répertoire en utilisant les horodatages en mode GUI. Mais je ne sais pas comment le trouver depuis la ligne de commande. Heureusement, j'ai trouvé cette solution après quelques recherches sur Google. Si vous vous êtes déjà demandé comment trouver le fichier le plus ancien dans un répertoire ou dans l'ensemble du système de fichiers, poursuivez votre lecture. Ce n'est pas si difficile.

Rechercher le fichier le plus ancien dans une arborescence de répertoires sous Linux

Pour rechercher le fichier le plus ancien d'un répertoire, par exemple /home/sk/ostechnix/, exécutez :

find /home/sk/ostechnix/ -type f -printf '%T+ %p\n' | sort | head -n 1

Décomposons cette commande et voyons ce que fait chaque argument de ligne de commande.

Ici,

  • find : Recherche des fichiers dans une hiérarchie de répertoires.
  • /home/sk/ostechnix/ - Rechercher un emplacement.
  • type -f - Recherche uniquement les fichiers normaux.
  • -printf '%T+ %p\n' - Imprime la date et l'heure de la dernière modification du fichier séparées par + symbole. (Par exemple, 22/07/2015+13:42:40.0000000000). Ici, %p indique le nom du fichier. \n indique une nouvelle ligne.
  • trier | head -n 1 - La commande sort trie la sortie et l'envoie à head< pour afficher le fichier le plus ancien. Ici, -n 1 indique un seul fichier, c'est-à-dire le fichier le plus ancien.

Comme vous le savez peut-être déjà, Explainshell vous aide à trouver ce que fait chaque partie d'une commande Linux.

La commande ci-dessus a renvoyé le résultat suivant :

2015-07-22+13:42:40.0000000000 /home/sk/ostechnix/Absolute FreeBSD_ 2nd Edition.pdf

Comme vous le voyez dans le résultat ci-dessus, Absolute FreeBSD_ 2nd Edition.pdf est le fichier le plus ancien du répertoire /home/sk/ostechnix/.

Veuillez noter que Linux ne trouve pas le fichier le plus ancien en utilisant la date de création du fichier. Au lieu de cela, il utilise la date de modification du fichier pour le trouver.

De même, pour rechercher les cinq fichiers les plus anciens dans un répertoire donné, exécutez simplement :

find /home/sk/ostechnix/ -type f -printf '%T+ %p\n' | sort | head -n 5

Exemple de résultat :

2015-07-22+13:42:40.0000000000 /home/sk/ostechnix/Absolute FreeBSD_ 2nd Edition.pdf
2016-11-28+21:03:05.0000000000 /home/sk/ostechnix/Etcher-linux-x64.AppImage
2016-12-14+18:28:20.5162190000 /home/sk/ostechnix/ubuntu.jpg
2016-12-18+18:14:46.5931480000 /home/sk/ostechnix/Marconi Union - Sleepless.mp3
2017-03-17+19:28:27.8193330000 /home/sk/ostechnix/The Devops toolkit.pdf

Le fichier le plus ancien sera affiché en premier.

Pour rechercher le fichier le plus ancien de l'ensemble du système de fichiers racine (/), exécutez :

sudo find / -type f -printf '%T+ %p\n' | sort | head -n 1

Mise à jour :

Un autre utilisateur de Linux a expliqué comment trouver les fichiers les plus anciens ou les plus récents dans un répertoire dans la section commentaires ci-dessous. C'est beaucoup plus simple que ma méthode.

Pour connaître le fichier le plus ancien d'un répertoire, accédez à ce répertoire et exécutez :

ls -lt | tail -1

Pour connaître le fichier le plus récent dans un répertoire :

ls -ltr | tail -1

J'espère que cela a été utile.

Articles connexes