ファイル名にエンコードの問題があるファイルがいくつかあります(ドイツ語のウムラウト、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
スイッチがありません。他に何ができますか?
あなたは試すことができます:
find . -inum 12321475 -exec mv {} new-filename \;
または
find . -inum 12321475 -print0 | xargs -0 mv -t new-filename
一般的に、私はexecよりもxargsを好みます。理由はグーグル。それはトリッキーです。 Find -exec + vs find | xargs。どれを選択するか? を参照してください。
この種の問題にはユーティリティconvmv
があります。ファイル名のエンコーディングをWindowsから変更することができますcp1256
からutf8などへ.
参考までに、正しいxargs -0
使用法は次のとおりです。
find . -inum 12321475 -print0 | xargs -0 -I '{}' mv '{}' new-filename
しかし、すでに指摘したように、それはとにかく必要ではありませんでした。