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.