Linux Befehl zum Löschen von Dateien in Unterverzeichnissen mit Wildcard?

  • Hallo zusammen,

    eigentlich dachte ich mit dem Befehl rm -rv *fritz*.* würde ich alle Dateien welches "fritz" enthält in allen Unterordnern löschen, geht aber nicht.

    Auch der Befehl "rm -rv history.upnp.0.FRITZ!Box_7362_SL_(UI).WANDevice.WANCommonInterfaceConfig.ByteReceiveRate.json" geht nicht, da im Dateinamen wahrscheinlich ein Zeichen drin ist, was eine Funktion auslöst.

    Wie kann ich die Dateien nun löschen?

  • Linux Befehl zum Löschen von Dateien in Unterverzeichnissen mit Wildcard?? Schau mal ob du hier fündig wirst!

  • Die Klammern musst du behandeln. Am einfachsten in Quotes setzen:

    rm -v "history.upnp.0.FRITZ!Box_7362_SL_(UI).WANDevice.WANCommonInterfaceConfig.ByteReceiveRate.json"

    Um alle zu löschen:

    find /path -iname '*fritz*'

    Und wenn die Liste OK erscheint:

    find /path -iname '*fritz*' -delete

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Zusatzfrage:

    Laut man find wird mit der Option -delete auch die Option -depth ausgeführt. Mann soll beim Testen mit find vorher -depth mit angeben um nicht ungewollt zu viele Daten zu löschen. Leider verstehe ich das nicht. Ich habe find mit -depth und ohne aufgerufen um dann unterschiedliche Ausgaben zu provozieren, damit ich sehe wo der Unterschied ist. Die Liste war aber jeweils gleich:

    Code
    find /home/pi/ -depth -iname '*vlc*'
    find /home/pi/ -iname '*vlc*'

    Was mache ich falsch?

  • Für den -delete Job hat die Option im Ergebnis keinen Einfluß.

    Guck dir den Unterschied zwischen

    find /var -depth -type d

    und

    find /var -type d

    an. Vielleicht wirds dann klarer (Stichwort: Reihenfolge der durchsuchten Verzeichnisse), was das Folgende heisst.

    -depth - sucht erst rekursiv im Inhalt der Verzeichnisse, bevor das Verzeichnis selbst untersucht wird


    Kann es sein, dass du -depth mit -maxdepth in einen Topf wirfst?

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Sorry, ich glaube ich hatte einen Aussetzer. Die Liste mit meinem Testaufruf war zu klein, bzw. nur eine Zeile machte den Unterschied deutlich. Das mit -depth quasi von hinten nach vorne gesucht wird, war mir schon bewusst. Hatte aber nur Dateien im Blick und Verzeichnisse nicht.

    Mit -depth, also auch -delete können leere Verzeichnisse entstehen die dann ggf. gelöscht werden.

    In diesem Zusammenhang. Ist es so gewollt, das apt-get mit update oder dist-upgrade erst versucht Verzeichnisse zu löschen und dann erst die enthaltenen Daten, oder ist das ein Fehler? Ich denke, das die Meisten hier das schon beobachtet haben. Vielleicht funktioniert purge deshalb auch nicht (immer)?

  • Vielleicht funktioniert purge deshalb auch nicht (immer)?

    In Abhängigkeit von den pre-/postrm Scripten eines Pakets kann es vorkommen, dass Verzeichnisse nicht gelöscht werden, wenn sie Dateien enthalten, die der Admin selbst angelegt hat (oder manuelle Backupfiles). Ansonsten ... Please file a bugreport.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    • Offizieller Beitrag

    Hmmm, bekomme folgende Fehlermeldungen:


    -bash: !Box_7362_SL_: event not found

    Vermutlich wird das ! schon von bash interpretiert. Ein Versuch wäre ein Backslash vor das Ausrufezeichen zu setzen (...FRITZ\!Box...)

    https://www.gnu.org/software/bash/…esignators.html

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!