Ich muss alle Dateien finden, die mit dem Namen NAME
in einem Verzeichnisbaum beginnen, und alle diese Dateien mit einem Shell-Befehl entfernen.
36
um alle dateien zu löschen, deren name name hat --- können sie benutzen
find -name . 'name*' -exec rm {} \;
grep
hat einen-exec
Schalter?Löschen Sie alle Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen, deren Dateiname mit "foo" beginnt:
Achtung: Vorsichtig verwenden - zuerst sichern - auch zuerst trocken laufen, z
teilt Ihnen nur die Namen der Dateien mit, die gelöscht werden sollen.
quelle
find . -type f -name foo\* -delete
machte den TrickIch habe versucht, auf diese Weise funktioniert es für mich unter Befehl versuchen.
Hier ist "Beispiel" Text, der für alle Dateien gleich ist.
quelle
Sie können verwenden
find
:quelle
Mit der
globstar
Option (aktivieren mitshopt -s globstar
):**/
Expandiert zu./
,*/
,*/*/
,*/*/*/
etc. Wenn Sie einen haben Verzeichnisnamen mit StartNAME
, wird sich beschweren , der Befehl , dassrm
Verzeichnisse nicht entfernen können, aber das ist alles.Beachten Sie, dass dies möglicherweise zu Einschränkungen der Befehlszeilenlänge führen kann, wenn der Glob mit vielen Dateien übereinstimmt.
Alternativ können Sie mit so wenigen Aufrufen
rm
wie möglich, jedoch ohne Einschränkung der Befehlszeilenlänge, Folgendes ausführen:(Beachten Sie die
+
statt\;
der engen-exec
Erklärung.)quelle
find . -name 'foo'* -type f -delete
scheint die einfachste Antwort zu sein.Sie können dies ohne das
-delete
Flag ausführen, um zu sehen, welche Dateien gelöscht werden.quelle
Suchen Sie nach der "Inode" -Nummer der Datei / des Ordners und löschen Sie diese mit der Inode-Nummer. Unten ist ein Beispiel:
quelle