
ファイル名にはエンコードの問題がいくつかあります(ドイツ語のウムラウト、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
答え1
あなたは試すことができます:
find . -inum 12321475 -exec mv {} new-filename \;
または
find . -inum 12321475 -print0 | xargs -0 mv -t new-filename
通常、私はexecよりもxargsを好みます。 Googleなぜですか?しかし、トリッキーです。バラよりxargsを使って-exec +を見つけます。どちらを選択しますか?
答え2
convmv
これらの問題のためのユーティリティがあります。ファイル名のエンコーディングをWindowsからcp1256
utf8などに変更できます。
答え3
記録に対してのみ正しいxargs -0
使用法は次のとおりです。
find . -inum 12321475 -print0 | xargs -0 -I '{}' mv '{}' new-filename
しかし、すでに指摘したように、とにかくそれは必要ありません。