Hoe alle bestanden in een map op één na te verwijderen

verwijder Linux-bestanden

Soms heb je nodig verwijder bijna alle bestanden uit een map, maar u wilt er een of enkele behouden. Als er grote aantallen zijn, is het een vervelende taak om een ​​voor een te gaan. Het is niet de beste optie, er zijn manieren om het werk onder Linux veel gemakkelijker te maken en dat je al degenen die je nodig hebt in één keer kunt elimineren.

U wilt bijvoorbeeld alleen die verwijderen die met een bepaalde naam beginnen, of die een specifieke extensie hebben, enz. Dat is allemaal mogelijkIn feite heb ik bij andere gelegenheden al soortgelijke tutorials in LxA getoond. Hier kunt u de tutorial stap voor stap en op een eenvoudige manier volgen om al die bestanden die u wilt, behalve wat u wilt opslaan, te verwijderen.

En het mooiste is dat u hoeft geen programma te installeren, het kan eenvoudig worden gedaan met opdrachten als rm en find. Dat wil zeggen, programma's die al vooraf zijn geïnstalleerd op elke Linux-distro. En natuurlijk is de methode gebaseerd op het vinden van patronen en het gebruik van die overeenkomsten om alleen te verwijderen wat je wilt.

Nou, om daar te elimineren verschillende alternatieven, Wat zijn zij…

Verwijder bestanden uit een map met rm

Nou, om de rm-opdracht Om te elimineren hoe u zich voelt, moet u eerst enkele manieren kennen om patronen te identificeren:

  • * (lijst met patronen) - komt overeen met nul of meer exemplaren van de opgegeven patronen
  • ? (lijst met patronen) - komt overeen met nul of één keer voorkomen van de opgegeven patronen
  • + (patroonlijst) - komt overeen met een of meer exemplaren van de opgegeven patronen
  • @ (patroonlijst) - komt overeen met een van de opgegeven patronen
  • ! (patroonlijst) - komt overeen met alles behalve een van de gegeven patronen

naar extglob inschakelen Om ze te kunnen gebruiken, moet u eerst de volgende opdracht uitvoeren:

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

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

oog! Ik specificeer het niet, maar er wordt aangenomen dat je machtigingen hebt om deze bewerkingen uit te voeren, en dat je je in die map bevindt wanneer je het rm-commando uitvoert. Wees hier voorzichtig mee, want als u het in een ander pad uitvoert, kunt u uiteindelijk bestanden verwijderen die u niet wilt. Dat wil zeggen, voordat u deze opdrachten uitvoert, moet u ervoor zorgen dat u met cd de gewenste directory hebt ingevoerd.

Nu kunt u rm gebruiken om te verwijderen wat u maar wilt. Bijvoorbeeld, verwijder alle bestanden uit een map behalve degene die overeenkomen met de naam «Lxa»:

rm -v !("lxa")

U kunt ook specificeren twee of meer namen die u niet wilt verwijderen​ Om bijvoorbeeld te voorkomen dat u "lxa" en "desdelinux" verwijdert:

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

U kunt alle bestanden verwijderen, minus die met extensie .mp3. Bijvoorbeeld:

 rm -v !(*.mp3) 

Aan het einde kunt u teruggaan naar uitschakelen extglob:

 shopt -u extglob 

Verwijder bestanden uit een map met find

Een ander alternatief voor rm is gebruik find om te verwijderen wat u maar wilt​ Je kunt een pipe en xargs gebruiken met rm, of de optie -delete gebruiken om. Dat wil zeggen, de generieke syntaxis zou zijn:

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

Stel je bijvoorbeeld voor dat je iets wilt verwijder alle bestanden in een map behalve die met de extensie .jpg, je zou een van deze twee commando's kunnen gebruiken, aangezien ze allebei hetzelfde resultaat krijgen:

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

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

In plaats daarvan, als je zou willen voeg wat extra patroon toe, jij zou ook kunnen. Stel je bijvoorbeeld voor dat je de .pdf of de .odt niet uit een directory wilt verwijderen:

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

U kunt natuurlijk hetzelfde doen met | en xargs zoals in het vorige voorbeeld. We hebben trouwens gebruikt -niet te ontkennen, maar je kunt dat verwijderen om het positief te maken, dat wil zeggen om de overeenkomende patronen te verwijderen en ze niet uit te sluiten.

Verwijder bestanden uit een directory met behulp van de GLOBIGNORE-variabele

Eindelijk is er een ander alternatief zoeken en rm, en het gebruikt een omgevingsvariabele om te verwijzen naar de bestanden die u wilt verwijderen of uitsluiten. Stel u bijvoorbeeld voor dat u alle bestanden in een map met de naam Downloads wilt verwijderen en de .pdf-, .mp3- en .mp4-bestanden wilt opslaan. In dat geval kunt u het volgende doen:

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


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.