みずりゅの自由帳

主に参加したイベントやソフトウェア技術/開発について記録しています

Linux上のファイル名の文字化けを修正したい

備忘。
Linux上でファイル名が文字化けしていて、そのファイル名を修正したい場合のtipsです。
CentOS 7.5で動作を確認しています。

結論から言うと、ファイルのi-node番号を指定してファイル名を変更します。
以下、カレントディレクトリ直下にある、文字化けしたファイル名を修正する例です。



1. 対象ファイルのi-node番号を確認します。この場合、「808579982」がi-node番号です。

$ ls -inum *.xlsx
808579982   ?g???t?B?b?N?f?[?????_201808.xlsx


2. findコマンドでi-node番号を指定して、一つだけになるか確認します。

$ find . -inum 808579982 
./?g???t?B?b?N?f?[?????_201808.xlsx


3. findコマンドに「-ok」オプションを付与し、さらにmvコマンドに渡すように指定します。
実行文の最後には「\;」(バックスラッシュとセミコロン)を付与します。
これがないと「-ok に引数がありません」とエラーが出ます。 
実行後、mvの実行に対してユーザ確認が出力されるので、実施して良いなら「y」を入力してEnterキーを押してください。

$  find . -inum 808579982 -ok mv {} data_201808.xlsx \;
< mv ... ./?g???t?B?b?N?f?[?????_201808.xlsx > ?   y     …OKなら、「y」を入力する。
$
$ ls
data_201808.xlsx

そもそもは、文字化けするようなファイルを置かないでください、って言うのがあるのですけどね。