[gelöst]Mülleimer leeren nicht möglich!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Hinweis: In dem Thema [gelöst]Mülleimer leeren nicht möglich! gibt es 9 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • [gelöst]Mülleimer leeren nicht möglich!

    Hi,

    habe paar Ordner in den Mülleimer verschoben und nun kann ich diese nicht mehr aus dem Mülleimer entfernen. Es kommt eine Rückmeldung " Datei /home/user/.local/share/Trash/files/css/css/img/left_top_img - ??+t?+.gif kann nicht gelöscht werden".
    Lassen sich auch nicht ins Dolphin (Systemverwaltungsmodus) verschieben, dass ich dort mit Root-Rechte vielleicht eine Chance hätte.

    Ebenfalls habe ich paar Ordner die ich nicht in den Mülleimer verschieben kann. Kommt dann die Rückmeldung "default_rtl - ??+t?+.css existiert nicht".

    Git es ein Programm das mit solchen hartnäckigen Ordner, Dateien fertig wird?

    so long.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Altritschi ()

    Für den Inhalt des Beitrages 54093 haftet ausdrücklich der jeweilige Autor: Altritschi

  • Hallo,

    eine Möglichkeit von mir. :D

    1. Eine Konsole öffnen.
    2. su eingeben.
    3. mit cd ins entsprechende Verzeichnis wechseln.
    4. jetzt versuchen, mit : rm <Dateiname> - eine Datei löschen
    oder : rmdir <Verz.Name> - ein Verzeichnis löschen.


    Über eine positive Rückmeldung würde ich mich tierisch freuen.
    ;) weiterhin viel Spaß :!:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von boser ()

    Für den Inhalt des Beitrages 54096 haftet ausdrücklich der jeweilige Autor: boser

  • Was auf jeden Fall geht, ist der -etwas brutale- Löschbefehl

    Quellcode

    1. rm -rf /home/$USER/.local/share/Trash/*
    Dein Problem scheint zu sein, dass du Leer- und Sonderzeichen in den Dateinamen hast.
    Die kannst du trotzdem alle nach Belieben matlrätieren, wenn du sie "quotest".

    Quellcode

    1. rm 'Datei die blöde /(*Zeichen und Ümläute ? irgend§wo_im Namen hat'
    Beachte den Apostroph (der, der mit <umschalt><#> erzeugt wird), der am Anfang und am Ende des Names steht.

    Ein Fragezeichen in einem Namen würde von der bash als Wildcard, an dessen Stelle jedes beliebige Zeichen stehen kann.
    Aber eben nicht die Sonderzeichen, wie ?* selbst.
    Wenn man irgendetwas in diese einfachen Hochkomma (<umschalt><#>) setzt, so ist alles innerhalb dieser Zeichen nur noch das Zeichen selbst.

    Es ist bei Linuxdateien jedes Zeichen erlaubt, außer der binären Null \0 und dem Pfadtrenner "/" selbst.
    Kann man schon verwenden, wenn man das Quoting berücksichtigt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von uhelp ()

    Für den Inhalt des Beitrages 54098 haftet ausdrücklich der jeweilige Autor: uhelp

  • Alles erfolgreich gelöscht!

    hallo boser,

    die Dateien und Ordner die nicht im Mülleimer waren habe ich mit Deiner Methode zum löschen gebracht. War aber sehr mühselig. Habe über 1Stunde gebraucht. Dateien und Ordner die im Mülleimer nicht zu löschen waren, da hat mir uhelp weiterhelfen können.
    Vielen Dank für die Hilfe.


    hallo uhelp,

    durch Deine Hilfe weiß ich endlich im welchen Pfad der Mülleimer zu finden ist.
    /home/$USER/.local/share/Trash/ und dort bin ich dann zum Teil mit rm -rf weiter gekommen.

    Quellcode:
    1 rm 'Datei die blöde /(*Zeichen und Ümläute ? irgend§wo_im Namen hat'

    Diesen Quellcode habe ich nur zum Teil verstanden, konnte aber keine Verwendung finden, so dass ich doch die ganzen Zeichen wie ?+- explizit eingegeben hatte. Eine Schwierigkeit hatte ich noch, und das war das Leerzeichen. Diesen musste ich dann durch einen verkehrten Schrägstrich (Backslash) mit nachfolgendem Leerzeichen eingeben. Wie sagt man da doch gleich noch? Das muss man auch im php machen. Wenn man z.Bsp. den "Text ausgeben will mit dem Anführungsstrichen" muss davor ein Backslash \"text\" stehen.

    Sollte mich mal wieder mit PHP - Programmierung beschäftigen.

    Vielen Dank für die Hilfe

    so long.

    Für den Inhalt des Beitrages 54134 haftet ausdrücklich der jeweilige Autor: Altritschi

  • von PHP rate ich ebenso dringend ab, wie von Java.
    Man muss nicht vorsätzlich ein sicheres System verunsichern.

    Das Wort, das du suchtest heißt "quoten" oder auch "escapen".

    Die bash kennt mehrere Spezialzeichen.
    So steht ein "*" für Null oder beliebig viele Zeichen anstelle des Sterns.
    Ein "?" steht für genau ein beliebiges Zeichen.

    Und die bash kennt einige "Befehlstrenner" nämlich Strichpunkt, Leerzeichen, Doppelpunkt (ist nicht nur Trenner sondern sogar tatsächlich ein Befehl, der NoOPeration-Befehl), und einen Backslash, der alleine am Ende einer Zeile steht, und natürlich den Zeilentrenner (\n] selbst.
    Ist eines dieser Zeichen in einem Dateinamen, muss man es mit einem vorangestellten "\" "quoten. Damit verliert es seine Sonderbedeutung und wird zum "Buchstaben" innerhalb eines Dateinamens.

    Man sollte auf solche Spielchen verzichten.

    Hat man das Problem doch, kann man sie ganz einfach dennoch bearbeiten.
    Der folgende Befehl nutzt die Fähigkeit von "find" Dateinamen durch eine binäre Null voneinander getrennt auszugeben und eine weitere Fähigkeit auf gefundene Dateien einen Befehl(skette) anzuwenden:

    Quellcode

    1. find /Pfad/zu/dir/ab/dem/alles/gefunden/werden/soll -name '*' -print0 -exec rm {} \;
    Das sieht ziemlich kryptisch aus, und liest sich einfach so:
    "find"e
    ab dem Verzeichnis /Pfad/zu..... und in allen Unterverzeichnissen dort alle Dateien mit
    -name(n) '*' Beachte, dass ich den Stern, der hier für alles steht, gequotet habe, damit die Bash ihn nicht interpretiert, sondern der Befehl "find" ihn erhält.

    Wir suchen also in allen Unterverzeichnissen ab /Pfad... alle Dateien mit belibigen Namen.
    Jetzt umgehen wir alle Sonder- und Trennzeichen, indem wir als Listentrenner bei den gefundenen Dateien eine binäre Null verlangen:
    -print0

    und lassen auf jeden gefundenen Dateinamen
    -exec rm {}
    los. Das Klammerpaar steht bei jedem Aufruf von "rm" für eine gefundene Datei.

    Da man auch ganze Befehlsketten angeben kann, muss "find" irgendwie mitgeteilt werden, wann diese Kette zu Ende ist, also ist ein ";" am Ende zwingend. Und damit die ausführende Bash das Semikolon nicht selbst interpretiert, müssen wir es wieder mit Backslash schützen.
    \;

    Mit dem Befehl wärst du "etwas" schneller zum Ziel gekommen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sauerland ()

    Für den Inhalt des Beitrages 54142 haftet ausdrücklich der jeweilige Autor: uhelp

  • uhelp schrieb:

    Quellcode

    1. find /Pfad/zu/dir/ab/dem/alles/gefunden/werden/soll -name '*' -print0 -exec rm {} \;
    Das sieht ziemlich kryptisch aus ...
    Das sieht nicht nur so kryptisch aus...

    Wer sich das exec-rm-Geraffel sparen möchte, lässt alles direkt von find löschen:

    Quellcode

    1. find /Pfad/zu/dir/ab/dem/alles/gefunden/werden/soll -name '*' -delete

    Für den Inhalt des Beitrages 54179 haftet ausdrücklich der jeweilige Autor: Persephone

  • Es mag halt nicht immer nur um Löschen gehen.

    Der Befehl "find", wenn man ihn denn kann, sieht bei versierter Nutzung immer kryptisch aus.
    Ist halt noch gutes altes Unix.

    Für den Inhalt des Beitrages 54184 haftet ausdrücklich der jeweilige Autor: uhelp

  • uhelp schrieb:

    ... wenn man ihn denn kann ...
    ... hätte man sich das - im konkreten Beispiel komplett überflüssige - print0 gespart und die Fähigkeit von rm genutzt, mehrere Dateinamen gleichzeitig anzunehmen:

    Quellcode

    1. find /Pfad/ -name '*' -exec rm {} +


    Und nun dürfen die Mods unsere Diskussion wieder löschen, aber vielleicht liest es ja vorher noch jemand... :rolleyes:

    Für den Inhalt des Beitrages 54187 haftet ausdrücklich der jeweilige Autor: Persephone

  • Auch eine Möglichkeit "find" zu nutzen.

    Am Rande: Auch mit "-exec" simuliert "find" ein xarg. Es wird also -so oder so- genutzt.

    Für den Inhalt des Beitrages 54190 haftet ausdrücklich der jeweilige Autor: uhelp

  • Hiermit schließe ich den Thread , weil das Problem nicht mehr existent ist und alle anderen Diskussionen bitte per PM:

    Für den Inhalt des Beitrages 54191 haftet ausdrücklich der jeweilige Autor: boser