Versuchen
find . -type f -exec rm {} \;
Haben Sie versucht, das übergeordnete Verzeichnis zu löschen?
Nach einem Speicherfehler in meinem Programm stecke ich mit einer Datei mit einem merkwürdigen Dateinamen fest. Es ist ziemlich resistent gegen alle normalen Methoden, um Dateien mit seltsamen Namen zu entfernen.
Der Dateiname lautet:
% 8BUȅ҉% 95d% F8% FF% FF \ x0f% 8E% 8F% FD% FF% FF% 8B% B5T% F8% FF% FF% 8B% 85 \% F8% FF% FF \ x03% 85x% F8% FF% FF% 8B% 95D% F8% FF% FF% 8B% BD% 9C% F8% FF% FF% 8D \ x04% 86% 8B% B5 @% F8% FF% FF% 89% 85% 90% F8 % FF% FF% 8B% 85X% F8% FF% FF \ x03% 85% 9C% F8% FF% FF% C1% E7 \ x02% 8B% 8Dx
Ich habe folgendes versucht:
rm *
No such file or directory
rm -- filename
No such file or directory
rm "filename"
No such file or directory
ls -i
um die Inode-Nummer zu erhaltenNo such file or directory
stat filename
No such file or directory
error occurred while adding "" to the archive
error -43
os.unlink(os.listdir(u'.')[0])
OSError
-No such file or directory
find . -type f -exec rm {} \;
No such file or directory
lsof
no locks
Alle diese Versuche führen zu einer Datei (langer Dateiname hier), die nicht gefunden wurde, oder Fehler -43. Sogar die ls -i
.
Ich konnte keine weiteren Optionen finden. Bevor ich mein Dateisystem neu formatierte oder reparierte ( fsck
möglicherweise hilfreich), dachte ich, vielleicht habe ich etwas vermisst.
Ich habe dieses kleine C-Programm geschrieben, um die Inode-Nummer zu erhalten:
#include <stdio.h> #include <stddef.h> #include <sys/types.h> int main(void) { DIR *dp; struct dirent *ep; dp = opendir ("./"); if (dp != NULL) { while (ep = readdir (dp)) { printf("d_ino=%ld, ", (unsigned long) ep->d_ino); printf("d_name=%s.\n", ep->d_name); } (void) closedir (dp); } else perror ("Couldn't open the directory"); return 0; }
Das funktioniert. Ich habe jetzt die Inode-Nummer, aber die normale funktioniert nicht. Ich denke ich muss das jetzt benutzen .find -inum inode_num -exec rm '{}' \;
clri
Versuchen
find . -type f -exec rm {} \;
Haben Sie versucht, das übergeordnete Verzeichnis zu löschen?
Assuming that the file system is something other than JHFS+
Symptoms may be indicative of a normalisation issue.
In the ZEVO support forum, NFD: normalization=formD (normalisation form D) includes a partial transcript from panel discussion at the 2012 Illumos ZFS Day:
… subtle bugs that, I feel like no-one else would appreciate my pain. Like in the Unicode space there's actually two different ways to store, several characters – like an é on the Mac traditionally is stored as an e and an ´ character. When it's rendered they composite them.
On any other platform … store composite characters … one click, one character.
So on the Mac, without intervention, you can get into some nasty problems because the Finder stores it one way, Terminal chose a different way. So you can actually go into the Finder and create a directory – café – then go into the Terminal and
touch café
then you have two objects – you have a directory and a file with exactly the same name, which is, it leads to all kinds of … (!) … it looks the same but unlike … where you have differentiator, there's nothing, it's like, and in the Finder, depending on the Finder view you get different experiences. Sometimes you see two folders, sometimes you see a folder and a file, sometimes you see one folder. It's like, it's bizarre. So unfortunately …
… there's a formD-explicit setting so, on the Mac we highly recommend and in fact that's the default, you should use formD so then that problem, you can't do that – when you do the touch it'll actually map it back to the correct way.
You pay a little bit of an overhead but you can keep your sanity. It's crazy to have different stacks using different variants of the encoding.
– http://www.ustream.tv/recorded/25862520 around 00:10:33 on the timeline.
Für mich
find parent-folder -delete
Problem gelöst. Achtung: Dadurch wird natürlich der gesamte übergeordnete Ordner gelöscht!
Ich konnte keine weiteren Optionen finden. Bevor ich mein Dateisystem neu formatierte oder reparierte (fsck könnte helfen), dachte ich, vielleicht habe ich etwas vermisst.
Nein, du warst gründlich. Anscheinend gibt es ein Problem mit einem Teil des Dateisystems. Sie könnten es reparieren. Oder Sie könnten darüber nachdenken, welchen anderen Spaß Sie machen möchten. Die einfache Sache ist jedoch, es zu reparieren.
Möglicherweise zögern Sie nicht, das Dateisystem zu reparieren: Es gibt eine sehr geringe, aber bestehende Chance, dass die Reparatur katastrophale Folgen haben könnte. Der beste Weg, sich davor zu schützen, ist die Sicherung aller wichtigen Daten. Stellen Sie sicher, dass Ihre Sicherungen in einwandfreiem Zustand sind, bevor Sie das Dateisystem reparieren.
Starten Sie dann die Reparatur. Wenn Sie wissen, was zu tun ist, benötigen Sie manchmal nur den Mut, um fortzufahren. Sie werden feststellen, dass dies in weniger als einer halben Sekunde vollständig gelöst ist. (Oder vielleicht etwas länger, wenn es etwas mehr Zeit gibt ... 3 Sekunden.)
Wenn Sie mit beschädigten Daten spielen, besteht auch die Gefahr, dass weitere Dateisystemprobleme auftreten. Wenn Sie also versuchen, sicher zu gehen, sollten Sie die vorläufige Überprüfung durchführen (was Sie bereits getan haben) und sich dann um das Problem kümmern (nach Überprüfung der Sicherungen).
Normalerweise öffne ich den umschließenden Ordner im Emacs-Direktmodus und markiere und lösche dann.