
В моей Корзине есть странный файл, который не исчезает, когда я очищаю корзину. Имя файла выглядит так:
␀␀␀õ␀␀.õ␀
Файл, по-видимому, находится в /Volumes/NO NAME/.Trashes/501/ («NO NAME» — это мой том Windows Boot Camp, поэтому я даже не уверен, почему у него есть каталог .Trashes. Если я попробую выполнить команду «ls» для этого файла или даже для этого каталога, я получу:
ls: \004␀␀␀õ\001␀␀.õ\001␀: File name too long
То же самое происходит, если я пробую «sudo ls -le», «sudo ls -la» или «sudo ls -i».
И похожие результаты, когда я пытаюсь выполнить rm или даже "find . -type f -print0 | sudo xargs -0 rm"
Как мне от этого избавиться?
решение1
Этот человекбыла та же проблема, и я решил ее, выполнив проверку диска в Windows.
решение2
одно, что можно попробовать, это использовать вызовы более низкого уровня, чем ls, чтобы вывести список каталогов
python -c 'import os; print repr(os.listdir("/Volumes/NO NAME/.Trashes/501/"))'
и если это сработает, возможно, стоит попробовать использовать unlink()
функцию
редактировать: чтобы отключить попробуйте
python -c 'import os; os.unlink("/Volumes/NO NAME/.Trashes/501/\x04\xe2\x90\x80\xe2\x90\x80\xe2\x90\x80o\xcc\x83\x01\xe2\x90\x80\xe2\x90\x80.o\xcc\x83\x01\xe2\x90\x80")'
решение3
Вы пробовали удалить по inode?
ls -i
покажет файлы и их номера инодов
$ ls -i *.log
694197 alf.log 694719 mb.log
694181 fsck_hfs.log 24190 secure.log
802696 hdiejectd.log 694195 system.log
1094966 install.log 694396 windowserver.log
24189 ipfw.log
Затем используйте find для удаления по inode (допустим, я хочу удалить mb.log из предыдущего примера):
find . -inum 694719 -exec rm {} \;
решение4
Вы можете попробовать загрузить Windows и посмотреть, сможет ли она удалить файл (при условии, что она его действительно увидит).