GNU/Linux >> Tutoriels Linux >  >> Linux

Comment supprimer des fichiers répertoriés dans un autre fichier sous Linux

Sous une distribution de système d'exploitation Linux, tout est permis. Ces environnements de système d'exploitation open source vous emmènent à travers des montagnes russes sur tout ce qu'il y a à savoir sur les systèmes d'exploitation.

Un aspect clé qui définit fortement le besoin et le besoin continu d'un système d'exploitation est la gestion des fichiers. Aucun système d'exploitation ne gère mieux la gestion des fichiers que Linux. Que vous souhaitiez restreindre, créer ou améliorer la sécurité de votre système et de vos fichiers utilisateur, Linux offre la meilleure expérience utilisateur et les meilleures performances.

Le terminal Linux ou l'interface de ligne de commande est un environnement flexible permettant de manipuler des fichiers via des commandes associées à la création, au changement de nom, au déplacement et à la suppression de fichiers. Et si vous appreniez un autre tweak de manipulation de fichiers ?

Cet article nous guidera à travers la suppression des fichiers répertoriés dans un autre fichier sur un environnement de système d'exploitation Linux.

Scénario pratique

Nous proposerons une arborescence de répertoires factice à titre de référence. Considérez l'arborescence de répertoires suivante :

$ tree

À partir de la capture d'écran ci-dessus, TestDel est le répertoire parent avec son chemin absolu étant /home/dnyce/TestDel .

$ pwd

Le TestDel a quatre autres répertoires (docx_files , fichier_jpg , fichier_pdf , et xml_files ) à l'intérieur, rempli de fichiers de différents formats (docx, jpg, pdf et xml).

Maintenant, si nous voulons supprimer certains de ces fichiers, nous devrons d'abord lister leur chemin absolu dans un fichier. Nous allons créer un fichier texte appelé tobeDeleted.txt et ajoutez le chemin vers certains de ces fichiers.

$ sudo nano tobeDeleted.txt

Maintenant que nous avons le fichier à partir duquel les fichiers répertoriés seront supprimés, nous pouvons maintenant examiner les méthodologies viables qui initieront et exécuteront leur suppression.

Méthode 1 :Utilisation de la commande xargs

Sous les xargs approche, entrées de stdin sont lus par les xargs commande, puis convertie pour utiliser des arguments pouvant être associés à d'autres commandes.

Pour supprimer les fichiers répertoriés dans le tobeDeleted.txt ci-dessus fichier, nous implémenterons et exécuterons les xargs commande de la manière suivante. Les xargs la commande doit pointer vers le chemin absolu de tobeDeleted.txt fichier texte.

$ xargs -I{} rm -r "{}" < /home/dnyce/tobeDeleted.txt 

La commande lit le chemin absolu des fichiers répertoriés, puis vérifie leur emplacement réel pour que la suppression commence.

L'espace réservé "{}" cite les chemins des noms de fichiers répertoriés pour le rm -r commande pour supprimer après -I remplace la chaîne par le prochain chemin de nom de fichier à supprimer.

Nous pouvons maintenant continuer et exécuter la commande tree pour être certain que les fichiers répertoriés ont bien été supprimés avec la sortie de commande cat suivante comme point de référence.

$ cat tobeDeleted.txt
$ tree /home/dnyce/TestDel

Comme vous pouvez le voir, il nous reste 10 fichiers sur les 13 fichiers initiaux.

Méthode 2 :Utilisation de la commande sed

L'approche compacte en une ligne de sed nous aidera facilement à supprimer les fichiers répertoriés dans un autre fichier. Mettre à jour tobeDeleted.txt avec de nouveaux entrants.

$ sudo nano tobeDeleted.txt 

Le sed commande à utiliser pour la suppression des fichiers affichés dans la capture d'écran ci-dessus ressemblera à ceci :

$ sed 's/.*/rm -r "\0"/' /home/dnyce/tobeDeleted.txt

L'espace réservé "\0" pointe vers le chemin du nom de fichier pour suppression par rm -r commande où s traite les chemins de fichiers comme des éléments séparés sur la liste avec des extensions de fichiers variables (.*) .

Comme vous l'avez peut-être remarqué, le sed La commande n'effectue pas la suppression réelle du fichier pour nous, mais génère plutôt les commandes de suppression appropriées que nous pouvons exécuter confortablement.

Réexécutez l'arborescence commande pour être sûr que les fichiers sont supprimés avec la commande cat sortie comme point de référence.

$ cat /home/dnyce/tobeDeleted.txt
$ tree /home/dnyce/TestDel

Nous avons réussi à supprimer les fichiers répertoriés.

Méthode 3 :Utilisation de la commande awk

Encore une fois, mettez à jour le fichier tobeDeleted.txt déposer auprès des nouveaux entrants.

$ sudo nano tobeDeleted.txt 

Le maladroit commande à exécuter est la suivante :

$ awk -v q='"' '$0 = "rm -r " q $0 q' /home/dnyce/tobeDeleted.txt

Le -v affecte la variable q avec la valeur d'espace réservé " et '$0 = "rm -r " q $0 q' génère la commande résultante pour supprimer chacun des fichiers répertoriés.

Comme indiqué, le awk La commande n'effectue pas également la suppression réelle des fichiers répertoriés pour nous, mais génère les commandes que nous pouvons utiliser :

Exécutez l'arborescence commande en référence à la commande cat sortie pour confirmer la suppression des fichiers.

$ cat /home/dnyce/tobeDeleted.txt
$ tree /home/dnyce/TestDel

Vous avez ajouté avec succès une nouvelle compétence à vos routines de gestion de fichiers Linux.


Linux
  1. Comment convertir des fichiers en codage UTF-8 sous Linux

  2. Comment afficher ou modifier l'ACL dans les fichiers Linux

  3. Comment utiliser Netcat pour transférer des fichiers sous Linux

  4. Comment supprimez-vous les fichiers antérieurs à une date spécifique sous Linux ?

  5. Comment supprimer les fichiers .fuse_hidden* ?

Comment tronquer des fichiers (vides) sous Linux

Comment renommer un ou plusieurs fichiers sous Linux

Comment décompresser les fichiers gz sous Linux

Comment trouver des fichiers basés sur l'horodatage sous Linux

Comment supprimer/supprimer des fichiers sous Linux à l'aide de la commande rm

Comment compresser un fichier sous Linux