カテゴリー
Linux

grep でファイル拡張子をマッチさせる方法メモ♪

grep コマンドで拡張子を検出するメモ

# testfile.txt の「.txt」が含まれている行を表示
# '…' 正規表現を使用
# '…' の中で「\m」 メタ文字「m」の本来の文字にマッチ
grep '\.txt' testfile.txt

ポイントは、正規表現を有効化するためにパターンをシングルクォーテーション「’」で囲っておきながら、正規表現を無効化するために「¥」をドット「.」の前に置くという点です。

周りくどいですけれども、わたくしはこうしませんと拡張子をグレップできませんでした><。

おわりに

CentOS で grep を使用しておりました時に、10 分ほど調べたりとわかりませんでしたのでメモです♪

その時は、SQL のファイルに違いがあるのか無いのか調べたかったですの。具体的には diff コマンドでディレクトリを比較して、結果を「.sql」でグレップしようとしておりました。

↓ ファイル名に「sql」文字列が含まれるものも表示され、NG
[root@localhost tmp]# diff -qr eccube-2.12.6 eccube-2.13.0 | grep .sql
[root@localhost tmp]# diff -qr eccube-2.12.6 eccube-2.13.0 | grep '.sql'
[root@localhost tmp]# diff -qr eccube-2.12.6 eccube-2.13.0 | grep \.sql

↓ 拡張子が「.sql」のファイルのみが表示され、OK
[root@localhost tmp]# diff -qr eccube-2.12.6 eccube-2.13.0 | grep '\.sql'

なんだか結果が変でしたの。「.sql」が拡張子のファイルだけではなく、ファイル名に「sql」が含まれているファイルまでグレップに引っかかっておりました。

ですので今回ノートしましたの。

なお、こちらのページが参考になりました。ありがとう存じます!

以上です。

コメントを残す