サブフォルダ以下にある *.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