Unterschied zwischen "suchen -löschen" und "rm -rf'?
Möchte ich löschen Dateien aus einem bestimmten Verzeichnis rekursiv. So, ich habe
find . -wholename "*.txt" -delete
Wir können auch löschen Sie die Dateien mit
rm -rf *.txt
Was ist der Unterschied zwischen löschen der Datei mit rm
und find
??
Mit
find
Sie bekommen, um genauer zu sein, über die Dateien, die Sie entfernen, aber beide am Ende aufrufen unlink()
man page auf die Dateien, die Sie löschen.
InformationsquelleAutor Aashish P | 2012-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
find . -wholename abd.txt -delete
versucht zu entfernen, alle Dateien mit dem Namenabd.txt
, die irgendwo im Verzeichnisbaum.
rm -rf abd.txt
zu entfernen versuchtabd.txt
, und wenn es ein Verzeichnis ist, werden alle Dateien und Verzeichnisse in der Baum.Mit
find ...
Sie zu Scannen, Unterverzeichnisse, während der Verwendungrm
Sie zum Scannen nur von den Dateien, die im aktuell - Verzeichnis, nicht in einem Unterverzeichnis.mit
-r
,rm
entfernt auch Unterverzeichnisse.mein Kommentar war für @Aashish P. Und übrigens
-r
wird verwendet, um entfernen Sie rekursiv den Inhalt der Datei, wenn die Datei ein Verzeichnis ist, wird nicht gescannt auch Unterverzeichnisse.technisch ist der Inhalt einer Datei nicht tatsächlich in dem Verzeichnis, dass die Datei (das Verzeichnis enthält nur den Dateinamen und einen Zeiger auf die Datei), also, was tatsächlich passiert, ist ein Scannen, alles entfernen, ähnlich wie
find . -depth -exec rm \{} +
InformationsquelleAutor reinierpost
Während
find -wholename GLOBPATTERN
versucht, jede Datei, die unterhalb des aktuellen Verzeichnisses an (unabhängig von der Tiefe), den glob Sie mit derrm
Befehl ist nur abgeglichen werden Dateien, die direkt (Tiefe 1) unter dem aktuellen Verzeichnis.Btw. Sie brauchen nicht die
-r
Schalterrm
es sei denn, Sie wollen rekursiv ein Verzeichnis löschen (Wegen der.txt
- Erweiterung, ich nehme an, Sie wollen nur löschen normale Dateien)InformationsquelleAutor Jo So
find
verwendet mit-delete
, die Dateien findet und löscht.Find
Befehl nimmt den Pfad nach den Dateien suchen und dann die-delete
flag löscht die Dateien in diesem Pfad angegeben. Man kann also sagen: zu finden ist mehr ein selektives löschenIn der Erwägung, dass
rm -rf
Befehl löscht Dateien/Verzeichnisse rekursiv, egal was. Es bedeutetrm
löschen aller die Dateien und Verzeichnisse, die auf bestimmte Pfad.-r
steht für Rekursion und-f
ist Kraft löschen. Alsorm
gepaart mit-rf
halten zum löschen der Verzeichnisse und Dateien in Verzeichnisse auf dem Ziel-Pfad, bis er Sie findet keine mehr.InformationsquelleAutor Mav55