2013年10月29日
Linux ファイル名が文字化けしたファイルの名前の変更方法
Sambaサーバのデータを新サーバへ移動中
旧サーバの文字コードがEUCだったのに対し、
新サーバはUTF-8である為、
convmv -f euc-jp -t utf-8 /data --notest
※ /dataが対象のディレクトリ
で、ファイル名の文字コードを変換。
しかし、一部のファイルにシンボリックリンクを利用しており
そのリンク切れのせいで、covmvの処理が中断・・・
数も少なかったので個別にファイル名を変えて処理することに。
でも、文字化けしているファイルのファイル名の変更って・・・・???
ようやくたどり着いた方法は
1.まずはファイルのi-nodeを調べる。
ls -li
2.find&mvコマンドでファイル名を変更。
find . -inum 12345678 -ok mv ‘{}’new_name.dat \;
※12345678→inode番号
しかし新サーバのfindコマンドには-okオプションが使えない・・・
なので、
find . -inum 12345678 -print0|xargs -0 -I{} mv {} ./new_name.dat
※12345678→inode番号
で、ようやくファイル名が変更できた!
旧サーバの文字コードがEUCだったのに対し、
新サーバはUTF-8である為、
convmv -f euc-jp -t utf-8 /data --notest
※ /dataが対象のディレクトリ
で、ファイル名の文字コードを変換。
しかし、一部のファイルにシンボリックリンクを利用しており
そのリンク切れのせいで、covmvの処理が中断・・・
数も少なかったので個別にファイル名を変えて処理することに。
でも、文字化けしているファイルのファイル名の変更って・・・・???
ようやくたどり着いた方法は
1.まずはファイルのi-nodeを調べる。
ls -li
2.find&mvコマンドでファイル名を変更。
find . -inum 12345678 -ok mv ‘{}’new_name.dat \;
※12345678→inode番号
しかし新サーバのfindコマンドには-okオプションが使えない・・・
なので、
find . -inum 12345678 -print0|xargs -0 -I{} mv {} ./new_name.dat
※12345678→inode番号
で、ようやくファイル名が変更できた!