So löschen Sie alle Dateien bis auf eine in einem Verzeichnis

Linux-Dateien löschen

Manchmal brauchst du Entfernen Sie fast alle Dateien aus einem Verzeichnis, aber Sie möchten einen oder einige von ihnen behalten. Wenn es eine große Anzahl von ihnen gibt, ist es eine mühsame Aufgabe, nacheinander zu gehen. Es ist nicht die beste Option, es gibt Möglichkeiten, die Arbeit unter Linux viel einfacher zu machen und alle benötigten auf einmal zu eliminieren.

Beispielsweise möchten Sie möglicherweise nur diejenigen entfernen, die mit einem bestimmten Namen beginnen, oder diejenigen, die eine bestimmte Erweiterung usw. haben. Das alles ist möglichTatsächlich habe ich bei anderen Gelegenheiten bereits ähnliche Tutorials in LxA gezeigt. Hier können Sie dem Tutorial Schritt für Schritt und auf einfache Weise folgen, um alle gewünschten Dateien mit Ausnahme der zu speichernden Dateien löschen zu können.

Und das Beste ist das Sie müssen kein Programm installieren. Dies kann einfach mit Befehlen wie rm und find erfolgen. Das heißt, Programme, die bereits auf einer Linux-Distribution vorinstalliert sind. Und natürlich basiert die Methode darauf, Muster zu finden und diese Übereinstimmungen zu verwenden, um nur das zu entfernen, was Sie wollen.

Nun, um dort zu beseitigen mehrere Alternativen, Was sind Sie…

Entfernen Sie Dateien aus einem Verzeichnis mit rm

Nun, um die zu nutzen rm Befehl Um zu eliminieren, was Sie wollen, müssen Sie zuerst einige Möglichkeiten kennen, um Muster zu identifizieren:

  • * (Liste der Muster) - Entspricht null oder mehr Vorkommen der angegebenen Muster
  • (Liste der Muster) - entspricht null oder einem Vorkommen der angegebenen Muster
  • + (Musterliste) - Entspricht einem oder mehreren Vorkommen der angegebenen Muster
  • @ (Musterliste) - Entspricht einem der angegebenen Muster
  • ! (Musterliste) - entspricht etwas anderem als einem der angegebenen Muster

zu aktiviere extglob Um sie zu verwenden, müssen Sie zuerst den folgenden Befehl ausführen:

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

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

Auge! Ich gebe es nicht an, aber es wird angenommen, dass Sie die Berechtigung haben, diese Operationen auszuführen, und dass Sie sich in diesem Verzeichnis befinden, wenn Sie den Befehl rm ausführen. Seien Sie vorsichtig damit, denn wenn Sie es in einem anderen Pfad ausführen, werden möglicherweise Dateien gelöscht, die Sie nicht möchten. Stellen Sie daher vor dem Ausführen dieser Befehle sicher, dass Sie das gewünschte Verzeichnis mit cd eingegeben haben.

Jetzt können Sie rm verwenden, um alles zu entfernen, was Sie wollen. Beispielsweise, Löschen Sie alle Dateien aus einem Verzeichnis mit Ausnahme derjenigen, die dem Namen entsprechen «Lxa»:

rm -v !("lxa")

Sie können auch angeben zwei oder mehr Namen, die Sie nicht löschen möchten. Um beispielsweise zu vermeiden, dass "lxa" und "desdelinux" entfernt werden:

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

Sie können alle Dateien löschen, abzüglich der mit Verlängerung .mp3. Beispielsweise:

 rm -v !(*.mp3) 

Am Ende können Sie zu zurückkehren Extglob deaktivieren:

 shopt -u extglob 

Entfernen Sie Dateien aus einem Verzeichnis mit find

Eine andere Alternative zu rm ist Verwenden Sie find, um alles zu entfernen, was Sie möchten. Sie können eine Pipe und xargs mit rm verwenden oder die Option -delete verwenden, um zu suchen. Das heißt, die generische Syntax wäre:

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

Stellen Sie sich zum Beispiel vor, Sie wollen Löschen Sie alle Dateien aus einem Verzeichnis mit Ausnahme der Dateien mit der Erweiterung .jpg, Sie können einen dieser beiden Befehle verwenden, da beide das gleiche Ergebnis erhalten:

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

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

Stattdessen, wenn Sie wollten füge ein zusätzliches Muster hinzu, du könntest auch. Angenommen, Sie möchten weder .pdf noch .odt aus einem Verzeichnis entfernen:

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

Natürlich können Sie dasselbe mit | tun und xargs wie im vorherigen Beispiel. Übrigens haben wir verwendet -nicht zu leugnen, Sie können dies jedoch entfernen, um es positiv zu machen, dh um die übereinstimmenden Muster zu entfernen und sie nicht auszuschließen.

Löschen Sie Dateien aus einem Verzeichnis mit der Variablen GLOBIGNORE

Endlich gibt es eine andere Alternative zu finden und rm, und es verwendet eine Umgebungsvariable, um auf die Dateien zu verweisen, die Sie entfernen oder ausschließen möchten. Stellen Sie sich beispielsweise vor, Sie möchten alle Dateien in einem Verzeichnis namens Downloads löschen und die PDF-, MP3- und MP4-Dateien speichern. In diesem Fall können Sie Folgendes tun:

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


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.