
我的垃圾箱中有一個奇怪的文件,當我清空垃圾箱時,該文件不會消失。檔案名稱如下所示:
␀␀␀õ␀␀.õ␀
該檔案顯然位於 /Volumes/NO NAME/.Trashes/501/ 中(“NO NAME”是我的 Windows 訓練營卷,所以我什至不確定為什麼它有一個 .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,看看它是否可以刪除該檔案(假設它實際上可以看到它)。