サブフォルダ以下にある *.c
ファイルのなかから、特定の文字コード(UTF-8)であるものをリストアップする。
1 |
$ find . -name '*.c' -type f -print0 | xargs -0 nkf --guess | grep 'UTF-8' |
nkf –guess の出力例
1 2 3 |
./driver/foo.c: Shift_JIS (CRLF) ./driver/bar.c: CP932 (CRLF) ./mod/fiz.c: UTF-8 (LF) |
1. find
.
: カレントフォルダから再帰的に検索する。-name '*.c'
: 拡張子が c のファイルを検索する。-type f
: 検索対象をファイルとする。(フォルダを除く)-print0
: 文字列区切りをNUL文字とする。(デフォルトは改行文字)
2. xargs
-0
: 文字列区切りをNUL文字とする。(デフォルトは改行文字)
3. nkf
-guess
: 文字エンコーディングを判定(推測)する。
4. grep
'UTF-8'
: 検索対象の文字列を 'UTF-8' とする。
1 |
$ find . -name '*.c' -type f -exec nkf --guess {} + | grep 'UTF-8' |
-exec
- 検索でマッチしたファイルパス名で "
nkf --guess
" を実行する。 {}
がパス名に置き換えられる。-
+
グループ実行。可能な限り多くの複数のパス名でnkfコマンドを実行する。
【例】nkf --guess foo.c bar.c fiz.c
-
\;
単体実行。パス名毎に一つ一つnkfコマンドを実行する。
【例】nkf --guess foo.c; nkf --guess bar.c; nkf --guess fiz.c