Linuxコマンド:検索テクニック(find, grep)

普段は自宅でも会社でもWindowsマシンばかり使っているので、Linuxでファイルなどを探すときに探し方がわからず、いつもGoogle先生にお世話になる始末です。

そこで、ここではファイルやディレクトリを検索するときに使用するコマンド(find, grep)の書式、よく使う検索方法をまとめておきます。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

findコマンド

findコマンドは、ファイル名や属性情報に基づいた検索に使用します。

書式: find 検索するパス 検索条件 [アクション]

使用例

/etcディレクトリ以下の「.conf」で終わる名前のファイルまたはディレクトリを検索

find /etc -name '*.conf'

同じ条件で、検索対象を/etcディレクトリ直下に限定

find /etc -maxdepth 1 -name '*.conf'

カレントディレクトリ以下で1日以内に更新されたファイルまたはディレクトリを検索

find . -mtime -1

カレントディレクトリ以下で60分以内に更新されたファイルを検索

find . -type f -mmin -60

/tmp以下で100日以上変更がないディレクトリを検索

find /tmp -type d -mtime +100

カレントディレクトリ以下で21日以上変更がなく、ファイル名が「.bak」で終わるファイルを削除

find . -name  '*.bak' -mtime +21 -exec rm {} \;

カレントディレクトリ以下でファイルサイズが5,000KBを超えるファイルを検索

find . -size +5000k

カレントディレクトリ以下で1Mバイト以上のファイルの詳細な情報を一覧表示

find ./ -size +1024k -ls

カレントディレクトリ以下でファイルの所有者がstudentであるファイルまたはディレクトリを検索

find . -user student

カレントディレクトリ以下でパーミッションが「rwxr-xr-x」(755)のファイルを検索

find . -perm 755

/usr/bin以下でSUIDビットが立っているファイルを検索

find /usr/bin -type f -perm -u+s

grepコマンド

grepコマンドは、ファイルの内容から条件にマッチした行を検索するときに使用します。なお、grepコマンドの検索条件には正規表現を使用します。

書式:grep [option] [pattern] [file]

使用例

httpd.confの中から、大文字小文字にかかわらず「root」という文字列がある行を検索

grep -i 'root' httpd.conf

ファイル名の末尾が「.html」であるファイルの中から「charset」という文字列が含まれている行を検索

grep 'charset' *.html

sample.txtの中から、行頭が「#」で始まる行以外を検索

grep -v '^#' sample.txt

test.txtの中から「foo」「bar」「buz」が全て含まれる行を検索

grep 'foo' test.txt | grep 'bar' | grep 'buz'

sample.txtの中から「a」または「z」を含む行を検索

grep '[az]' sample.txt

sample.txtの中から「f~l(fghijkl)」のいずれかの文字を含む行を検索

grep '[f-l]' sample.txt

test.txtの中から「good」と一致する行を検索

grep -x 'good' sample.txt

sample.txtの中から「a」「m」「z」のいずれかを含む行を検索

grep -E 'a|m|z' sample.txt

test.txtの中から「j」を含む行を検索し、行番号を付加して表示

grep -n 'j' test.txt

おまけ

egrepとfgrep違い

egrepコマンドは、拡張正規表現を使用できます(grep -Eと同等)。fgrepコマンドは、パターンを検索するのではなく、文字列として検索するため、条件によっては検索が高速らしいです。

まとめ

ここで挙げた検索例は基本的なものばかりですが、普段から使っていないとすぐ忘れそうです。><

参考

IBM Knowledge Center | fgrepコマンド

スポンサーリンク