QA@IT

Mac OS Xのターミナルで名前に濁音・半濁音を含むファイルを扱いたい

3742 PV

たとえば

ls
#=> Javaコーディング規約.html  Rubyコーディング規約.html  Scalaコーディング規約.html ...

といったファイルがあり、find で「コーディング」という文字列を含むファイルを探したい場合、Terminal.appにて

find . -type f -name '*コーディング*'

としても濁音を含んでいるため期待した結果を得ることができません。上記のコマンドをファイルに書き込み

iconv -f utf8 -t utf8-mac find.sh > find_utf8-mac.sh

といった形に文字コードを UTF8-MAC に変換した後ならば問題無いのですが、ファイル名の変更や実行したいコマンドをファイルへの書き込み後に文字コード変更して実行といった手段を使わずに、Terminal.appまたは同等の機能を備えたアプリケーションで直接入力した濁音・半濁音をうまく扱う方法は有りませんでしょうか?

実行環境

  • Mac OS X 10.7.4
  • Terminal.app 2.2.3
  • zsh 4.3.17

回答

汎用的に使えるようにするなら、以下のようなコマンドを用意して、コマンドラインを入力した後、キー操作 (以下の bindkey の場合は「Ctrl+X "」) で変換するというのはどうでしょうか?

convert-utf8-mac () {
    BUFFER=$(echo "$BUFFER" | iconv -f utf8 -t utf8-mac)
}
zle -N convert-utf8-mac
bindkey '^X"' convert-utf8-mac
編集 履歴 (0)

私は、.zshrcにこんなものを書いて使っています。

find () {
  echo -n $* | iconv -f utf8 -t utf8-mac | xargs command find
}
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。