Shell

“mv”文件的inode編號亂碼?

  • October 12, 2015

我有幾個文件名中有編碼問題的文件(德語變音符號,用 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 等。

引用自:https://unix.stackexchange.com/questions/235396