Folioscope

プログラミング/Unix系/デザイン/CG などのメモがもりもり

文字が化けたファイルを参照する.

ファイル名が文字化けしていたり,他の言語で入力されていたりすると,コンソールからアクセスするときにファイル名が指定できなくて困る.
不便だからとファイル名を変更しようにも,元ファイル名にアクセス出来ない.
こうなると手も足も出ない.
f:id:ibenza:20130119005648p:plain

これを解決する方法はいくつかある.

ワイルドカードを使う

まずひとつはワイルドカードを使う方法だ.
例えば

rm -rf -- *

とすれば,文字化けしているファイルを含む,すべてのファイルを消すことができる.
しかしこの方法だと,特定のファイルへとピンポイントにアクセスするのが難しい.

ls/head/tailを使う.

もう一つの方法が,ls/head/tailを使用する方法だ.
例えばlsしたとき2番目に目的のファイルがあれば,次のようなコマンドでファイル名を表示できる.

ls | head -n2 | tail -n1

f:id:ibenza:20130119005652p:plain
lsの結果の上から2行を抜き出し,さらに下から1行を抜き出す.
こうすることでlsの結果の2行目をピンポイントで抜き出せる.
headtailは行単位で処理するのに,グリッドで表示されるlsを処理できるの?と思うかもしれないが,意外と相性がいい.
試しに3番目のファイルを指定すると,main.cppが帰ってくる.

ファイル名が返ってこればこっちのものなので,アクセスできる適当なファイルに変えてしまおう.

mv "`ls | head -n2 | tail -n1`" mojibake.png