GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie schließe ich einige Dateien vom Dateinamenerweiterungsmechanismus in Bash aus?

Ich habe Ubuntu-Dateisystemverzeichnisse im Stammverzeichnis und habe versehentlich Hunderte von Dateien in das Stammverzeichnis kopiert.

Ich habe intuitiv versucht, kopierte Dateien zu entfernen, indem ich Dateisysteme wie

ausschließe
rm -rf !{bin,sbin,usr,opt,lib,var,etc,srv,libx32,lib64,run,boot,proc,sys,dev} ./.

aber es geht nicht. Was ist der richtige Weg, um einige Verzeichnisse auszuschließen, während das Ganze gelöscht wird?

BEARBEITEN:Probieren Sie niemals einen der Befehle hier aus, ohne zu wissen, was zu tun ist!

Akzeptierte Antwort:

Da Sie bash verwenden :

shopt -s extglob
echo rm -rf ./!(bin|sbin|usr|...)

Ich empfehle echo hinzuzufügen am Anfang der Befehlszeile, wenn Sie etwas ausführen, was möglicherweise das gesamte System in die Luft jagen kann. Entfernen Sie es, wenn Sie mit dem Ergebnis zufrieden sind.

Hinweis:Der obige Befehl entfernt keine versteckten Dateien (solche, deren Name mit einem Punkt beginnt). Wenn Sie diese ebenfalls entfernen möchten, aktivieren Sie zusätzlich dotglob Möglichkeit:

shopt -s dotglob

Linux
  1. Wie entferne ich Dateien aus dem Papierkorb unter Ubuntu?

  2. Wie entferne ich die Zeilen, die in Datei B erscheinen, aus einer anderen Datei A?

  3. Wie können Sie Duplikate aus dem Bash-Verlauf entfernen?

  4. Wie kann ich Dateien mit regulären Ausdrücken aus dem TAR-Archiv ausschließen?

  5. Wie kann ich einige Benutzer vom Linux-Startbildschirm ausschließen?

Bash-Scripting:So lesen Sie Daten aus Textdateien

So entfernen Sie einen Befehl aus dem Verlauf in Linux

So entfernen Sie (^M) Zeichen aus einer Datei in Linux

So entfernen Sie Leerzeichen aus Dateinamen in Linux

So entfernen Sie Pakete von Ubuntu &Debian

Wie entferne ich Zonendateien von meinem Server?