web-dev-qa-db-ja.com

iノード番号で文字化けした名前の「mv」ファイル?

ファイル名にエンコードの問題があるファイルがいくつかあります(ドイツ語のウムラウト、WindowsでCDに書き込み、Windowsで読み取り、LinuxにSeafileで同期しました。何か、どこかで問題が発生しました...)。 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について考えていましたが、mv--by-inodeスイッチがありません。他に何ができますか?

8
Jasper

あなたは試すことができます:

find . -inum 12321475 -exec mv {} new-filename \;

または

find . -inum 12321475 -print0 | xargs -0 mv -t new-filename

一般的に、私はexecよりもxargsを好みます。理由はグーグル。それはトリッキーです。 Find -exec + vs find | xargs。どれを選択するか? を参照してください。

14
Michael Durrant

この種の問題にはユーティリティconvmvがあります。ファイル名のエンコーディングをWindowsから変更することができますcp1256からutf8などへ.

3
meuh

参考までに、正しいxargs -0使用法は次のとおりです。

find . -inum 12321475 -print0 | xargs -0 -I '{}' mv '{}' new-filename

しかし、すでに指摘したように、それはとにかく必要ではありませんでした。

2
Błotosmętek