Comment supprimer tous les fichiers sauf un dans un répertoire

supprimer les fichiers Linux

Parfois tu as besoin supprimer presque tous les fichiers d'un répertoire, mais vous souhaitez en conserver un ou plusieurs. Lorsqu'il y en a un grand nombre, aller un par un est une tâche fastidieuse. Ce n'est pas la meilleure option, il existe des moyens de rendre le travail sous Linux beaucoup plus facile et vous pouvez éliminer tous ceux dont vous avez besoin à la fois.

Par exemple, vous souhaiterez peut-être supprimer uniquement ceux qui commencent par un certain nom, ou ceux qui ont une extension spécifique, etc. Tout ce qui est possibleEn fait, à d'autres occasions, j'ai déjà montré des tutoriels similaires dans LxA. Ici, vous pouvez suivre le tutoriel étape par étape et de manière simple pour pouvoir supprimer tous les fichiers que vous souhaitez, sauf ce que vous souhaitez enregistrer.

Et la meilleure chose est que vous n'aurez pas besoin d'installer de programme, cela peut être fait facilement avec des commandes comme rm et find. Autrement dit, des programmes déjà préinstallés sur n'importe quelle distribution Linux. Et bien sûr, la méthode sera basée sur la recherche de modèles et l'utilisation de ces correspondances pour supprimer uniquement ce que vous voulez.

Eh bien, pour y éliminer plusieurs alternatives, qui sont…

Supprimer des fichiers d'un répertoire avec rm

Eh bien, pour utiliser le commande rm Pour éliminer ce que vous ressentez, vous devez avant tout savoir comment identifier les modèles:

  • * (liste des motifs) - correspond à zéro ou plusieurs occurrences des modèles spécifiés
  • ? (liste des motifs) - correspond à zéro ou à une occurrence des modèles spécifiés
  • + (liste de modèles) - correspond à une ou plusieurs occurrences des modèles spécifiés
  • @ (liste de modèles) - correspond à l'un des modèles spécifiés
  • ! (liste de motifs) - correspond à tout sauf à l'un des modèles donnés

Pour activer extglob Pour les utiliser, vous devez d'abord exécuter la commande suivante:

<br data-mce-bogus="1">

shopt -s extglob<br data-mce-bogus="1">

œil! Je ne le spécifie pas, mais il est supposé que vous disposez des autorisations nécessaires pour effectuer ces opérations et que vous vous trouvez dans ce répertoire lorsque vous exécutez la commande rm. Soyez prudent avec cela, car si vous l'exécutez dans un autre chemin, vous risquez de supprimer des fichiers dont vous ne voulez pas. Autrement dit, avant d'exécuter ces commandes, assurez-vous que vous avez entré le répertoire souhaité avec cd.

Vous pouvez maintenant utiliser rm pour supprimer tout ce que vous voulez. Par exemple, supprimer tous les fichiers d'un répertoire à l'exception de ceux qui correspondent au nom «Lxa»:

rm -v !("lxa")

Vous pouvez également spécifier deux noms ou plus que vous ne souhaitez pas supprimer. Par exemple, pour éviter de supprimer "lxa" et "desdelinux":

 rm -v !("lxa"|"desdelinux") 

Vous pouvez supprimer tous les fichiers, moins ceux avec extension .mp3. Par exemple:

 rm -v !(*.mp3) 

À la fin, vous pouvez revenir à désactiver extglob:

 shopt -u extglob 

Supprimer des fichiers d'un répertoire avec find

Une autre alternative à rm est utilisez find pour supprimer tout ce que vous voulez. Vous pouvez utiliser un tube et des xargs avec rm, ou utiliser l'option -delete pour rechercher. Autrement dit, la syntaxe générique serait:

find /directory/ -type f -not -name 'PATRÓN' -delete
find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}

Par exemple, imaginez que vous voulez supprimer tous les fichiers d'un répertoire à l'exception de ceux avec l'extension .jpg, vous pouvez utiliser l'une de ces deux commandes, car elles donnent toutes les deux le même résultat:

find . -type f -not -name '*.jpg'-delete

find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}

Au lieu de cela, si tu voulais ajouter un motif supplémentaire, vous pourriez aussi. Par exemple, supposons que vous ne souhaitiez pas supprimer le .pdf ou le .odt d'un répertoire:

find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete

Bien sûr, vous pouvez faire la même chose avec | et xargs comme dans l'exemple précédent. Au fait, nous avons utilisé -ne pas nier, mais vous pouvez supprimer cela pour le rendre positif, c'est-à-dire pour supprimer les modèles correspondants et ne pas les exclure.

Supprimer des fichiers d'un répertoire à l'aide de la variable GLOBIGNORE

Enfin, il y a Une autre alternative pour trouver et rm, et il utilise une variable d'environnement pour pointer vers les fichiers que vous souhaitez supprimer ou exclure. Par exemple, imaginez que vous souhaitez supprimer tous les fichiers dans un répertoire appelé Téléchargements, en enregistrant les fichiers .pdf, .mp3 et .mp4. Dans ce cas, vous pouvez effectuer les opérations suivantes:

cd Descargas
GLOBIGNORE=*.pdf:*.mp4:.*mp3
rm -v *
unset GLOBIGNORE


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.