Datei lässt sich nicht löschen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe ein kleines Problem und zwar wollte ich einen Ordner im home-Verzeichnis löschen jedoch kam nach ein paar Sekunden eine Fehlermeldung und eine Datei bliebt übrig die so heißt: �@@8aW@8 (Ihr seht die Fehlermeldung auch nochmal im Screen den ich anhänge). Ich habe schon einiges probiert mit Rechten und Befehlen mkdir mk ... nichts hat funktioniert...

    Mfg

  • Ich hatte mal ein ähnliches Problem auf der Micro-SD meines Handys.
    Es hat sich dann schliesslich herausgestellt das das Dateisystem nicht mehr ganz konsistent war, ein fsck hat das wieder behoben.

    Falls das Datei-System um das es geht auf der SD-Karte würde ich das von einem PC aus machen, Du musst nur aufpassen
    dass Du das fsck auf die richtige Partition (falls auf Deine Karte mehrere Partitionen hat) loslässt.

  • Wie wolltest du denn eine datei mit mkdir löschen?
    Wenn etwas hilft ist es rm -rf dateiname
    dann ist es weg, wenn es nicht (wie von morgon vermutet) ein Problem mit dem Dateisystem ist oder etwas ähnliches.

  • Nach dem Bild ist es ein einzelnes File in einem Directory.

    Einen Versuch ist es wert: mit der Kommandozeile in dieses
    Directory gehen und rm -i * eintippen.

    Dann fragt die Shell, ob sie das File loeschen soll. Mit
    y kann man das bestaetigen.

    Achtung: der Befehl loescht ALLE Files wenn etwas nicht stimmt.
    Also NUR in diesem Directory aufrufen und ganz genau abtippen !

    Wenn irgendwelche Fehler wegen fehlenden Rechten angezeigt
    werden ein sudo davor setzen:

    sudo rm -i *

  • Verrätst du mit was -i bringen soll?

    man rm sagt:
    -i prompt before every removal

    Also bloß: Frage immer nach ob du es wirklich löschen willst
    Rigoros alles löschen tut es auch nicht, habe ich gerade ausprobiert.
    sinnvoller ist (sudo) rm -rf dateiname (sudo sollte an der Stelle nicht nötig sein, aber man weiß nie, von daher guter Einwand)

    -rf heißt rekursiv ohne nachfrage alles löschen. Damit ist nicht zu spaßen, denn ein rm -rf / löscht deinen ganzen Computer leer (außer gerade geöffnete Dateien, die kann man einfach nicht löschen, garnicht)

    Das * aus deinem Vorschlag ist auch überflüssig, denn die bash ersetzt * (Vor Befehlsausführung) mit allen Dateinamen (Ordner sind auch Dateien in diesem Sinn) getrennt mit Leerzeichen. Der Befehl der ausgeführt wird würde also wieder rm -i dateiname lauten. Und das ist nichts anderes als ein normales löschen auf der Konsole mit Sicherheitsnachfrage.

  • Ich gehe jede Wette ein dass das ein Dateisystem-Problem ist.

    In meinem Fall damals hatte ich auch das Problem dass was immer man machte ob "rm -f <datei>" oder "rm -rf <verzeichnis mit datei>" egal ob als user oder root man einen Fehler bekam und die Datei (mit genau so einem "garbled" Dateinamen) stehen blieb.

  • Mir helfen bei solchen Fällen entweder:
    a) das File mittels mv umzubenennen
    b) mit ls -ali die Inode zu ermitteln und anschliessend mit find das file zu suchen und zu löschen (siehe auch hier)

    Bist Du übrigens sicher, dass die Datei nicht "in use" ist (fuser) ?


    cheers,
    -ds-

  • [font="Tahoma, Verdana, Arial, sans-serif"]> Verrätst du mit was -i bringen soll?[/font]
    [font="Tahoma, Verdana, Arial, sans-serif"]Seine letzte Chance um einen Fehler zu erkennen :thumbs1:[/font]

    [font="Tahoma, Verdana, Arial, sans-serif"]> Das * aus deinem Vorschlag ist auch überflüssig, denn die bash ersetzt *[/font]
    [font="Tahoma, Verdana, Arial, sans-serif"]Genau[/font]

    [font="Tahoma, Verdana, Arial, sans-serif"]> Der Befehl der ausgeführt wird würde also wieder rm -i dateiname lauten.[/font]
    [font="Tahoma, Verdana, Arial, sans-serif"]Und wie muesste er nun den abgebildeten Filenamen eintippen ???[/font]

    Einmal editiert, zuletzt von Tell (10. Januar 2014 um 09:56)

  • > Und wie muesste er nun den abgebildeten Filenamen eintippen ???
    mit 'Tab' und fertig.

    Aber ich hab deine Intention falsch verstanden, ich verstand dich so, als sei rm -i * ein Befehl der definitiv alles löscht, auch wenn normale Löschversuche scheitern. Ich sehe jetzt, dass es ganz anders gemeint war.
    Vorschlagsmerge:
    sudo rm -rfi * im Ordner mit der unerwünschten Datei ausführen, wenn das nicht funktioniert kannst du von einem echten Problem ausgehen und uns die Fehlermeldung schreiben.
    Trotzdem bleibe ich bei der Vermutung das es ein FS-Problem ist

    morgon ich stimme dir da von Anfang an zu, wollte bloß den sehr schnellen und einfachen Weg zeigen wie es funktionieren sollte wenn es doch kein FS-Problem ist.

  • Sofern sichergestellt ist, dass das Filesystem nicht korrupt ist oder ein Prozess nicht noch die Hand auf die Datei hat, gibt es noch einen anderen Weg, Dateien mit obskuren Namen zu löschen.

    Befehle wie rm * funktionieren nicht, weil der mit ls angezeigte Name nicht der eigentliche Name ist, sondern aus nicht darstellbaren Bitfolgen besteht oder es sind Sonderzeichen im Namen, die rm "falsch" interpretiert (z.B. * \ $).
    Ein rm findet daher die Datei nicht.

    Mein Vorschlag: emacs

    huch - Emacs ist ein Texteditor

    Aber für ganz hartnäckige Fälle wie diesen benutze ich den "dired"-Modus. Emacs funktioniert dann ähnlich wie der gute alte Norton Commander für MS-DOS (falls den hier noch einer kennt ;) )


    Zunächst muss emacs installiert sein, also

    Code
    apt-get install emacs

    Ist er installiert, wird er mit emacs im Terminal aufgerufen - am besten schon vorher in das betroffende Verzeichnis gehen.

    Emacs ist genial, DER Texteditor, aber kompliziert.
    Befehle werden als Tastenkombinationen aufgerufen: ein STRG-x bedeutet, die STRG (bzw. CTRL)-Taste gedrückt halten und ein x eintippen.

    Je nachdem wo man emacs aufruft, erscheint ein neues Fenster oder man bleibt im Terminal - ist aber egal.

    Im Emacs jetzt nacheinander STRG-x d eingeben.
    Der Cursor ist jetzt in der untersten Zeile, es wird das Verzeichnis angezeigt. Wenn der Pfad nicht stimmt, kann man den editieren.
    Anschließend die RETURN-Taste.

    Jetzt ist der Cursor oben in der Liste (ähnlich wie ein "ls -al" in der Konsole ).
    Mit den Pfeil-Tasten geht man nach oben oder unten zur Problemdatei.

    Ein d markiert die Datei (es lassen sich weitere Dateien markieren)
    Ein u hebt die Markierung auf
    Ein x löscht die markierten Dateien
    Ein q beendet den dired-Modus

    Das Löschen muss bestätigt werden, das "yes" muss ausgeschrieben werden.

    STRG-x STRG-c beendet emacs


    viel Spass

    Edit: es ist nicht verkehrt, emacs in diesen Fall als root aufzurufen.

    Keep it simple [,&] stupid

    Einmal editiert, zuletzt von kungel (10. Januar 2014 um 12:02)

  • Warum so kompliziert - dreamshader hat es oben schon beschrieben, insbesondere wenn man auch den angegebenen Link aufgerufen hat.

    Nochmal zusammenfassend:

    Code
    ls -ali

    zeigt u.a. auch die Datei mit dem verkorksten Dateinamen. Am Anfang steht eine Zahl, der sog. "inode". Angenommen, diese Zahl ist "444777". Dann ein

    Code
    find . -inum 444777 -exec rm -i {} \;


    und fertig.

    Gruß, mmi

  • Ich hab den ganzen Thread zwar nich gelesen aber rate dem Themen-Ersteller das ganze über die Konsole zu versuchen bzw das ganze Verzeichnis zu lösen da sich anscheint nur eine Datei darin befindet:

    Code
    rm -rf /home/Teamspeak
  • Ok danke für die vielen hilfreichen Antworten.

    Also ein Prozess ist nicht mehr am laufen der auf die Datei zugreift.

    Dann habe ich alle Befehle + die gut Beschriebene Anleitung für emacs ausprobiert, beides hat nicht geklappt. Das Problem ist er zeigt an wenn ich in der Ordner will, dass es diesen Ordner überhaupt nicht mehr gibt :

    -bash: cd: /Teamspeak: Datei oder Verzeichnis nicht gefunden

    Ich schätze mal das es wirklich am Dateisystem liegt... Ist es möglich das irgendwie zu reparieren ohne alle Daten zu löschen ?

  • Selbst ein Prozess der noch die Datei offen hätte würde Deine Fehler nicht erklären denn selbst dann müsste rm den directory-Eintrag (wenn auch nicht die Datei selber) löschen - und das scheitert ja.

    Wenn Du Glück hast kann ein fsck Deine Karte reparieren ohne dass Du etwas verlierst - ich denke die Wahrscheinlichkeit ist recht hoch.

    Wie ist denn Deine Karte formatiert (also wieviele und welche Partitionen sind drauf) und in welchem Dateisystem hast Du das Poblem (also FAT32 oder ext4 etc)?

    Mit Linux die Karte reinstecken, falls sie automatisch gemountet wird dann unmounten, mit kpartx devices für die Partitionen
    anlegen und ein fsck für die betroffene Partition starten.

    Wenn das alles komplett unverständlich ist dann solltest Du Dir vielleicht von jemanden helfen lassen.

    Mit Windows oder Mac geht das wohl auch irgendwie aber damit kenne ich mich nicht aus.

    Viel Erfolg!


  • Das Problem ist er zeigt an wenn ich in der Ordner will, dass es diesen Ordner überhaupt nicht mehr gibt :

    -bash: cd: /Teamspeak: Datei oder Verzeichnis nicht gefunden

    Das ist ja auch falsch!

    Das Verzeichnis liegt nicht im Wurzelverzeichnis ' / ' sondern unter /home/ !

    Also wenn dann: cd /home/Teamspeak


  • ...
    -bash: cd: /Teamspeak: Datei oder Verzeichnis nicht gefunden
    ...

    /Teamspeak gibts ja auch nicht, oder sehe ich das falsch?
    Ich dachte das wäre /home/Teamspeak :s

    cu,
    -ds-


    /EDIT: Ooops, zwei Deppen ein Gedanke ;) ...

Jetzt mitmachen!

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