GNU/Linux >> Tutoriels Linux >  >> Linux

Rechercher et supprimer le fichier le plus ancien s'il y a plus de X fichiers dans un répertoire sous Linux

J'ai de nombreux films sur mon disque dur et je les ai stockés dans différents dossiers en fonction du genre de film. Maintenant, je veux ne conserver qu'un nombre particulier de fichiers vidéo dans un répertoire et supprimer tout le reste. Plus important encore, je souhaite supprimer uniquement les fichiers les plus anciens. De cette façon, je peux maintenir un nombre constant de fichiers dans chaque dossier. Étant donné que j'ai tellement de fichiers dispersés dans de nombreux dossiers, il faut beaucoup de temps pour accéder à chaque dossier, rechercher les fichiers les plus anciens et les supprimer manuellement un par un. En cherchant un moyen simple de le faire, j'ai trouvé la solution suivante. Continuer à lire. Ce n'est pas si difficile.

Rechercher et supprimer le fichier le plus ancien dans un répertoire sous Linux

Supposons que vous souhaitiez rechercher et supprimer le fichier le plus ancien s'il existe plus de 10 fichiers dans un répertoire. Comment feriez-vous ? C'est très simple.

Prenez le répertoire suivant nommé ostechnix par exemple. Vérifions combien de fichiers se trouvent dans ce répertoire en utilisant la commande :

$ find ostechnix/ -type f | wc -l

Ou cd dans ce répertoire et exécutez :

$ ls | wc -l

Exemple de résultat :

33

Comme vous le voyez dans l'exemple ci-dessus, le répertoire ostechnix contient 33 fichiers. Je ne veux pas 33 fichiers dans ce répertoire. Je souhaite supprimer tous les fichiers les plus anciens et ne conserver que 10 fichiers.

Maintenant, recherchons et supprimons le ou les fichiers les plus anciens de ce répertoire s'il contient plus de 10 fichiers. Pour ce faire, accédez à ce répertoire :

$ cd ostechnix

Et lancez la commande suivante :

$ ls -1t | tail -n +11 | xargs rm

Ou,

$ ls -1t | tail -n +11 | xargs rm -f

Où,

  • ls  :Liste le contenu du répertoire.
  • -1t  :  1(Numéro un ) indique que la sortie de ls devrait être un fichier par ligne. t indique trier le contenu par heure de modification, le plus récent en premier.
  • tail  :affiche la dernière partie des fichiers.
  • -n +11  :affiche les NUM dernières lignes, au lieu des 10 dernières ; ou utilisez -n +NUM pour sortir en commençant par la ligne NUM
  • xargs  :créez et exécutez des lignes de commande à partir de l'entrée standard.
  • rm -f :supprimer des fichiers ou des répertoires. f indique ignorer les fichiers et arguments inexistants, ne jamais demander. Cela signifie que cette commande n'affichera aucun message d'erreur s'il y a moins de 10 fichiers.
  • | - C'est un pipeline. Il s'agit généralement d'une séquence d'une ou plusieurs commandes séparées par l'un des opérateurs de contrôle | ou |& .

Ainsi, la commande ci-dessus supprimera les fichiers les plus anciens s'il y a plus de 10 fichiers dans le répertoire de travail actuel. Pour vérifier combien de fichiers se trouvent dans le répertoire après avoir supprimé le ou les fichiers les plus anciens, exécutez simplement :

$ ls | wc -l

Mise à jour :

Si les noms de fichiers contiennent des espaces, la commande ci-dessus ne fonctionnera pas. Parce que les xargs La commande prend des espaces blancs (tabulations, espaces, nouvelles lignes) comme délimiteurs. Dans ce cas, vous pouvez le réduire uniquement pour les caractères de nouvelle ligne ('\n' ) avec -d comme ci-dessous :

$ ls -1t | tail -n +11 | xargs -d '\n' rm -f

J'espère que cela vous aidera.

Suggestion de lecture : 

  • Comment rechercher et supprimer des fichiers de plus de X jours sous Linux
  • Supprimer les fichiers qui n'ont pas été consultés pendant un certain temps sous Linux

Linux
  1. Renommer tous les fichiers et noms de répertoires en minuscules sous Linux

  2. Comment supprimer des fichiers et des répertoires sous Linux à partir de la ligne de commande

  3. Comment trouver le fichier le plus ancien dans une arborescence de répertoires sous Linux

  4. Linux Supprimer des fichiers et des répertoires

  5. Comment rechercher et supprimer des répertoires et des fichiers vides sous Linux

Comment copier des fichiers et des répertoires sous Linux

Comment compter les fichiers dans le répertoire sous Linux

Comment rechercher et supprimer des fichiers en double sous Linux

Les 3 meilleurs outils pour rechercher et supprimer des fichiers en double sous Linux

Comment supprimer des fichiers plus anciens que les jours spécifiés sous Linux

Linux :rechercher le nombre de fichiers dans un répertoire et des sous-répertoires