So entfernen Sie unter Linux alle Dateien, die mit einer bestimmten Zeichenfolge beginnen
Ich muss alle Dateien, die mit dem Namen NAME beginnen, in einem Verzeichnisbaum finden und alle diese Dateien mit einem Shell-Befehl entfernen.
Ich muss alle Dateien, die mit dem Namen NAME beginnen, in einem Verzeichnisbaum finden und alle diese Dateien mit einem Shell-Befehl entfernen.
Alle Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen löschen, deren Dateiname mit “foo” beginnt:
$ find . -type f -name foo\* -exec rm {} \;
NB: mit Vorsicht verwenden - zuerst sichern - auch zuerst einen Trockenlauf machen, z. B.
$ find . -type f -name foo\*
wird Ihnen nur die Namen der Dateien nennen, die gelöscht werden würden.
Ich habe diese Methode ausprobiert, die bei mir funktioniert, indem ich den folgenden Befehl ausprobiere.
rm -rf Example*
hier ist “Beispiel” ein Text, der für alle Dateien gleich ist.
Mit der Option globstar (mit shopt -s globstar aktivieren):
rm -f **/NAME*
**/ expandiert zu ./, */, */*/, */*/*/ usw. Wenn Sie einen Verzeichnisnamen haben, der mit NAME beginnt, wird sich der Befehl beschweren, dass rm keine Verzeichnisse entfernen kann, aber das ist alles.
Beachten Sie, dass dies an die Grenzen der Befehlszeilenlänge stoßen kann, wenn der Glob auf viele Dateien passt.
Alternativ, mit so wenig Aufrufen von rm wie möglich, aber ohne Längenbeschränkung der Befehlszeile:
find . -type f -name 'NAME*' -exec rm -f {} +
(Beachten Sie das + anstelle von \; zum Schließen der -exec-Anweisung).
find . -name 'foo'* -type f -delete scheint die einfachste Antwort zu sein.
Sie können dies vorher ohne das Flag -delete ausführen, um zu sehen, welche Dateien gelöscht werden.