Linux

【Linux】find検索で文字コードを指定してgrepする方法

投稿日:

 

find検索で文字コードを指定してgrepする方法を紹介します。

 

コード

コードは次のとおりです。

「こんにちは」を含むファイルを現在のディレクトリ下で調べます。

「nkf -w」で文字コードを指定しています。

 

「nkf -w」はUTF-8です。

その他は【 nkf 】コマンド――文字コードと改行コードを変換するで確認してみてください。

 

ちなみに「-print0 | xargs -0」でファイル名にスペースや改行を含むファイルもエラーなく検索できるようにしています。

 

 find ./ -type f -print0 | xargs -0 grep -l "`echo こんにちは | nkf -w`" 

 

特定のディレクトリを除外して検索したい場合は以下のような感じです。

「-path "*/images" -prune -o -path "*/image" -prune -o -path "*/img" -prune -o」を追加しました。

 

「images」「image」「img」というディレクトリは無視してくれるようになります。

 

find ./ -path "*/images" -prune -o -path "*/image" -prune -o -path "*/img" -prune -o -type f -print0 | xargs -0 grep -l "`echo こんにちは | nkf -w`"

 

抽出した結果を特定のファイルにまとめたい場合は以下のような感じです。

「> sample.txt」を追加しました。

 

find ./ -path "*/images" -prune -o -path "*/image" -prune -o -path "*/img" -prune -o -type f -print0 | xargs -0 grep -l "`echo こんにちは | nkf -w`" > sample.txt

-Linux

Copyright© ストロテクト株式会社Note , 2021 All Rights Reserved.