Shell
“mv”文件的inode編號亂碼?
我有幾個文件名中有編碼問題的文件(德語變音符號,用 Windows 刻錄在 CD 上,由 Windows 讀取並用 Seafile 同步到 Linux。有些地方出了問題……)。Bash 和 zsh 只顯示“?” 而不是變音符號,
stat
顯示類似$ stat Erg�nzung.doc File: ‘Erg\344nzung.doc’ Size: 2609152 Blocks: 5096 IO Block: 4096 regular file Device: 806h/2054d Inode: 12321475 Links: 1
我只能通過自動完成輸入文件名。如何重命名文件?LibreOffice(或其他文件類型的其他程序)似乎無法讀取受影響的文件,他們抱怨“沒有這樣的文件或設備”。
我在想
mv --by-inode 12321475 Ergänzung.doc
,但沒有--by-inode
開關mv
。我還可以做些什麼?
你可以試試:
find . -inum 12321475 -exec mv {} new-filename \;
或者
find . -inum 12321475 -print0 | xargs -0 mv -t new-filename
一般來說,我更喜歡 xargs 而不是 exec。Google為什麼。不過這很棘手。請參閱Find -exec + vs find | xargs。選擇哪一個?
convmv
此類問題有一個實用程序。它允許您將文件名的編碼從例如 windowscp1256
更改為 utf8 等。