用奇數字元重命名文件夾
我的 Mac 上有一個名為“␀␀␀␀HFS+ Private Data”的文件夾。我正在嘗試刪除它,但它包含一堆奇怪的字元,這些字元阻礙了 unlink、rm 和 mv,因此很難刪除它及其內容。我嘗試編寫一些程式碼來直接呼叫 unlink() 以防萬一 unlink/rm/mv 二進製文件正在執行其他操作 - 但不,unlink() 無法解析此字元。
我使用 echo 和 od 來確定這是什麼字元:
************@Trinity:~/Desktop/test$ echo -e "␀" | od -t oC -An 342 220 200 012`
我在這裡查找了 342:http: //ascii-code.com - 發現它是 Latin-1 集合的一部分。我嘗試使用 iconv 將其轉換為 UTF-8:
************@Trinity:~/Desktop/test$ iconv -f latin1 -t utf-8 "␀␀␀␀HFS+ Private Data" iconv: ␀␀␀␀HFS+ Private Data: I/O error
那麼如何刪除這個文件夾呢?我可以將十六進制/八進制程式碼傳遞給 rm 或 mv 什麼的嗎?我已經嘗試了所有我能想到的方法,包括 rm *、呼叫 sudo 等。問題是 unlink 阻塞了那個角色,所以我需要以某種方式改變那個角色。我還在考慮在 VM 中安裝 Debian 並授予它訪問該文件夾的權限,以便我可以從那裡嘗試,以防這是我在 OS X 環境中使用的工具的問題。
編輯:我試過這個:
************@Trinity:~/Desktop/test$ echo -e "␀␀␀HFS+ Private Data" | od -t oC -An 342 220 200 342 220 200 342 220 200 110 106 123 053 040 120 162 151 166 141 164 145 040 104 141 164 141 012` ************@Trinity:~/Desktop/test$ echo "\342\220\200\342\220\200\342\220\200\110\106\123\053\040\120\162\151\166\141\164\145\040\104\141\164\141\012" | xargs rm rm: 342220200342220200342220200110106123053040120162151166141164145040104141164141012: No such file or directory ************@Trinity:~/Desktop/test$ echo "\342" \342
EDIT2:顯示 unlink() 錯誤
************@Trinity:~/Desktop/test$ unlink test3.txt ************@Trinity:~/Desktop/test$ unlink "␀␀␀␀HFS+ Private Data/1.txt" unlink: ␀␀␀␀HFS+ Private Data/1.txt: Invalid argument ************@Trinity:~/Desktop/test$ cd "␀␀␀␀HFS+ Private Data/" ************@Trinity:~/Desktop/test/␀␀␀␀HFS+ Private Data$ unlink 1.txt unlink: 1.txt: Invalid argument
EDIT3:表明這不是 HFS+/文件系統問題,而是文件名問題
************@Trinity:~/Desktop/test$ mkdir "␀␀␀␀testTest" ************@Trinity:~/Desktop/test$ rm -r "␀␀␀␀testTest" rm: ␀␀␀␀testTest: Invalid argument
EDIT4:這可能是進步……接下來我要搞亂語言環境。
************@Trinity:~/Desktop/test$ ls | grep -i *test* | xxd 0000000: e290 80e2 9080 e290 80e2 9080 7465 7374 ............test 0000010: 5465 7374 0a Test. ************@Trinity:~/Desktop/test$ rm -r $'\xe2\x90\x80\xe2\x90\x80\xe2\x90\x80\xe2\x90\x80\x74\x65\x73\x74\x54\x65\x73\x74\x0a' rm: ␀␀␀␀testTest : No such file or directory Follow-up to this: nope, false hope. I dropped the \x0a on the end and it 'worked'... kind of. ************@Trinity:~/Desktop/test$ rm -r $'\xe2\x90\x80\xe2\x90\x80\xe2\x90\x80\xe2\x90\x80\x74\x65\x73\x74\x54\x65\x73\x74' rm: ␀␀␀␀testTest: Invalid argument
根據https://apple.stackexchange.com/questions/31734/hfs-private-directory-data該文件夾用於文件系統內部工作。您可能無法刪除它,即使可以,它也很可能會破壞您的文件系統。
我知道這已經為 OP 解決了,但是對於任何偶然發現這個問題的人來說,這似乎是 10.11 El Capitan 唯一的問題。我嘗試並能夠在 OS X 10.4 Tiger 和 OS X 10.10 Yosemite 中刪除具有此字元的文件,因此它很可能適用於其他文件。