Пытаться
find . -type f -exec rm {} \;
Вы пытались удалить родительский каталог?
После ошибки памяти в моей программе я застрял в файле со странным именем файла. Это довольно устойчиво ко всем обычным методам удаления файлов со странными именами.
Имя файла:
% 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% С1% Е7 \ x02% 8B% 8Dx
Я попробовал следующее:
rm *
No such file or directory
rm -- filename
No such file or directory
rm "filename"
No such file or directory
ls -i
чтобы получить номер инодаNo 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
Все эти попытки приводят к тому, что файл (длинное имя файла здесь) не найден, или ошибка -43. Даже то ls -i
.
Я не мог найти больше вариантов, поэтому, прежде чем переформатировать или восстановить мою файловую систему ( fsck
может помочь), я подумал, что, возможно, что-то упустил.
Я написал эту небольшую программу на C, чтобы получить номер инода:
#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; }
Это работает. Теперь у меня есть номер инода, но обычный не работает. Я думаю, что я должен использовать сейчас.find -inum inode_num -exec rm '{}' \;
clri
Пытаться
find . -type f -exec rm {} \;
Вы пытались удалить родительский каталог?
Предполагая, что файловая система отличается от JHFS +
Симптомы могут указывать на проблему нормализации.
На форуме поддержки ZEVO NFD: normalization = formD (форма нормализации D) включает в себя частичную расшифровку стенограммы дискуссионного форума в 2012 году на Дне Illumos ZFS:
... тонкие ошибки, которые, я чувствую, никто больше не оценит мою боль. Как и в пространстве Юникода, на самом деле есть два разных способа хранения, несколько символов - как é на Mac, традиционно хранятся как символы e и ´ . Когда они оказываются, они объединяют их.
На любой другой платформе ... храните составные символы ... один клик, один символ.
Так что на Mac без вмешательства вы можете столкнуться с некоторыми неприятными проблемами, потому что Finder хранит его одним способом, а Terminal выбрал другой путь. Таким образом, вы можете зайти в Finder и создать каталог - café - затем войти в терминал и
touch café
тогда у вас есть два объекта - у вас есть каталог и файл с абсолютно одинаковым именем, то есть он ведет ко всем видам… (!)… выглядит одинаково, но в отличие… где у вас есть дифференциатор, ничего нет, это похоже на и в Finder, в зависимости от вида Finder, вы получаете различный опыт. Иногда вы видите две папки, иногда вы видите папку и файл, иногда вы видите одну папку. Это как, это странно. Так что к сожалению ...
… Есть явная настройка formD, поэтому на Mac мы настоятельно рекомендуем, и на самом деле это по умолчанию, вы должны использовать formD, так что тогда эта проблема, вы не можете сделать это - когда вы делаете касание, оно фактически отображает его обратно на правильный путь.
Вы платите немного накладных расходов, но вы можете сохранить свое здравомыслие. Безумие иметь разные стеки, использующие разные варианты кодирования.
- http://www.ustream.tv/recorded/25862520 около 00:10:33 на временной шкале.
Для меня
find parent-folder -delete
решил проблему. Внимание: это, конечно, удалит всю родительскую папку!
Я не мог найти больше вариантов, поэтому, прежде чем переформатировать или восстановить мою файловую систему (может помочь fsck), я подумал, что, возможно, что-то упустил.
Нет, ты был тщательным Похоже, что есть проблема с частью файловой системы. Вы могли бы это починить. Или вы можете подумать о том, что еще вы хотели бы сделать. Однако самое простое - это починить.
Возможно, вы по праву неохотно восстанавливаете файловую систему: существует очень маленький, но существующий шанс, что восстановление может произойти катастрофически. Лучший способ защитить себя от этого - создать резервную копию всех важных данных. Убедитесь, что ваши резервные копии находятся в хорошем состоянии, прежде чем восстанавливать файловую систему.
Затем начните ремонт. Когда вы знаете, что делать, иногда вам просто нужно мужество, чтобы продолжить. Вы можете обнаружить, что это полностью решено менее чем за полсекунды. (Или, может быть, немного дольше, если есть некоторые накладные расходы ... 3 секунды.)
Обратите внимание, что игра с поврежденными данными также представляет возможный риск возникновения дальнейших проблем с файловой системой, поэтому, если вы пытаетесь быть в безопасности, тогда безопаснее всего выполнить предварительную проверку (которую вы уже сделали), а затем просто позаботиться о проблеме. (после проверки резервных копий).
Я обычно открываю вложенную папку в режиме emacs dired, а затем отмечаю и удаляю.