Linuxで、ファイルを検索する場合は、様々な方法があります。
ファイル名の検索
locateコマンド
1 |
locate ファイル名パターン |
カレントディレクトリがどの階層にあったとしても、全ディレクトリを指定した文字列で検索をしてくれます。
実行例
1 2 3 4 5 6 7 |
[root@localhost /]# locate spooler /etc/foomatic/defaultspooler /var/log/spooler /var/log/spooler-20170621 /var/log/spooler-20170625 /var/log/spooler-20170706 /var/log/spooler-20180125 |
findコマンド
1 |
find 検索対象パス(省略するとカレント以下を検索する) 検索式 |
findコマンドは、基本的な動作はlocateコマンドと同様ですが下記の点の動作が異なります。
- カレントディレクトリ以下を検索する点
- 様々な条件式をオプションで指定できる点
実行例
1 2 3 4 5 6 |
[root@localhost /]# find -name "spooler*" -size 0k ./var/log/spooler-20170621 ./var/log/spooler-20170706 ./var/log/spooler-20180125 ./var/log/spooler-20170625 ./var/log/spooler |
例えば、上記のコマンドでは、ファイル名が「spooler」から始まり、ファイルサイズが0KBのものを検索するという条件を指定しています。
検索式の種類
検索式 | 説明 |
---|---|
-name | ファイル名 |
-size | ファイルサイズ、例:5k(5KB)、+5k(5KB以上)、-5k(5KB以下) |
-atime | ファイルの最終アクセス日時、例:3(3日前)、+3(3日以上前)、-3(3日以内) |
-amin | ファイルの最終アクセス日時を分単位で指定 |
-mtime | ファイルの最終更新日を指定 |
mmin | ファイルの最終更新時刻を分単位で指定 |
-perm | ファイルのアクセス権を指定、例:666、444 |
-type | ファイルタイプを指定:f(ファイル)、d(ディレクトリ)、l(シンボリックリンク) |
-exec | コマンドを実行させます。(例えば、条件に合致していなかったファイルだけ削除のようにもできたりします。) |
ファイル内容の検索
grepコマンド
1 |
grep オプション 文字パターン 検索対象ファイル |
オプション一覧
オプション | 説明 |
---|---|
-F | 文字パターンを正規表現でなく、単なる文字列として扱う。 |
-c | マッチした行数だけを表示する。 |
-i | 大文字、小文字を区別しない。 |
-l | マッチした行のあるファイル名のみ表示する。 |
-n | 行番号も合わせて表示する。 |
-v | マッチした行ではなく、マッチしなかった行を表示する。 |
実行例
yum.confから、「ma」という文字列を行番号付で検索する場合の例
複数ファイルをまとめてgrepする場合
1 |
grep -r "検索文字列パターン" 検索ディレクトリ |
grepは、基本単一ファイル内の文字を検索しますが、上記のように指定することで、指定したディレクトリ以下をまとめてファイル内容の検索をかけることができます。
この記事へのコメントはありません。