Ich habe Ubuntu-Dateisystemverzeichnisse im Stammverzeichnis und ich habe versehentlich Hunderte von Dateien in das Stammverzeichnis kopiert.
Ich habe intuitiv versucht, kopierte Dateien durch Ausschließen von Dateisystem wie zu entfernen
rm -rf !{bin,sbin,usr,opt,lib,var,etc,srv,libx32,lib64,run,boot,proc,sys,dev} ./.
Aber es funktioniert nicht. Wie lassen sich einige Verzeichnisse beim Löschen des gesamten Verzeichnisses ordnungsgemäß ausschließen?
BEARBEITEN: Versuchen Sie niemals einen der Befehle hier, ohne zu wissen, was zu tun ist!
mc
. Wählen Sie alles mit*
und deaktivieren Sie dann bestimmte Dateien mit-
oderInsert
./bin/bash
mc
ist Midnight Commander, eine sehr nützliche Nachahmung von Norton Commander. Es läuft in einem Terminal. (Sowohl Midnight Commander als auch Norton Commander sind Beispiele für einen so genannten orthodoxen Dateimanager .)Antworten:
Da Sie verwenden
bash
:Ich empfehle,
echo
am Anfang der Befehlszeile etwas hinzuzufügen , 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 (die Namen beginnen mit einem Punkt). Wenn Sie diese auch entfernen möchten, aktivieren Sie auch die
dotglob
Option:quelle
rm -rf ./!(bin,sbin,..)
Kommas zu trennen, aber es werden alle Verzeichnisse entfernt.!(...)
Syntax? Aus dem Beispiel habe ich intuitiv gedacht,ls ./!(*/)
dass nur Dateien aufgelistet werden, aber es funktioniert nicht so.*
oder anderen Globs.Dieser Befehl zeigt alle Nicht-Verzeichnisse in
/
:Sobald Sie absolut sicher sind, dass keine Dateien vorhanden sind, die Sie behalten möchten, können Sie Folgendes verwenden:
Sicherer wäre es, sie an einen anderen Ort zu verschieben, um sicherzustellen, dass Sie nicht etwas löschen, das Sie beibehalten möchten:
Wenn zusätzlich zu Dateien, Sie haben auch Verzeichnisse , dass Sie an die Wurzel des Dateisystems hinzugefügt haben, dies könnte durch automatisiert werden mit Ausnahme der LSB - Verzeichnisse von einem automatisierten
mv
oderrm
, aber ehrlich gesagt, da wir es zu tun mit dem Spülen Dinge in der root des Dateisystems, würde ich empfehlen, dass Sie es manuell tun, wenn überhaupt möglich.Wenn dies nicht machbar ist, könnte so etwas den Trick machen:
Sobald Sie den Schreitest bestanden haben (dh Ihr System läuft noch und Sie schreien nicht vor Angst), können Sie den Inhalt von entfernen
/root/preserve/
.Wichtiger Hinweis: Was auch immer Sie tun, denken Sie nicht einmal daran, eine Permutation von auszuführen
rm -fr [ANYTHING GOES HERE] /
.quelle
rm
. Wie ein Skript mitrm -fr $somepath/
mitsomepath
darin nicht initialisiert. Ich hätte noch weiter gehen können, um auszudrücken, wie ernst das ist, aber ich entschied mich, in meiner Ermahnung familienfreundlich zu bleiben.Dies sollte die Arbeit erledigen (wenn auch nicht auf die gleiche Weise, wie es das OP verlangt):
Entfernen Sie alle Dateien / Verzeichnisse, die Sie behalten möchten
Wenn Ihre Dateien alle dasselbe Namensformat, Datum oder etwas anderes haben, gibt es andere Methoden.
Ich würde mir die Inodes ansehen - und sehen, ob sie über ls -i | sort sequentiell sind, und wenn ja, dann werden die neuen Dateien größere Inodes haben. Dann mit der gleichen Art von Prozess wie oben ...
Überprüfen Sie im obigen Befehl "Ausschneiden" zuerst Ihre Inodes-Liste, um sicherzustellen, dass es sich um die richtige Menge handelt.
quelle