検索系のコマンドは使用頻度が高い割に使い方が覚え辛く、忘れてしまいがちなので、この機会にしっかり覚えたい。
以下、自分が仕事でよく使うコマンドのメモ。シェルはBashを使用。今回は検索系のコマンドに焦点を絞った備忘録。
コマンドの場所を確認する
コマンドの場所を表示する。各ユーザの.cshrcファイルで設定されたパスを表示する。
which [コマンド名]
ファイル中の文字列を検索する
ファイル中の文字列を検索する。
grep [ -[[AB] ]num ] [ -[EFGBchilnsvwx] ] [ -e pattern | -f file ] [ files... ]
| オプション | 説明 |
|---|---|
| -G | 検索に正規表現を使用できる |
| -E | 検索に拡張正規表現を使用できる |
| -F | 固定文字列の検索を行う |
| -num | マッチした行から前後num行を同時に検索結果として表示する |
| -A num | マッチした行から後num行を同時に検索結果として表示する |
| -B num | マッチした行から前num行を同時に検索結果として表示する |
| -C | マッチした前後2行を同時に検索結果として表示する |
| -b | 各行の前に、ファイルの先頭からバイト単位のオフセット数を表示する |
| -n | 各行の前に行番号を表示する |
| -c | 検索条件にマッチした行数を表示する。-cvとするとマッチしなかった行数を表示する |
| -e pattern | 検索条件を指定する |
| -f file | 検索パターンとしてfileの内容を使用する |
| -h | 検索結果の先頭にマッチしたファイル名を同時に表示する |
| -i | 検索条件に大文字と小文字の区別をなくす |
| -l | 検索条件にマッチしたファイル名を表示する。-lvとするとマッチしなかったファイル名を表示する |
| -q | 検索結果を表示しない |
| -s | エラー・メッセージを表示しない |
| -v | マッチしない行を検索結果として表示する |
| -w | パターン・マッチを、単語全体で行うようにする |
| -x | 行全体を検索対象にする |
| files | 検索するファイルを指定する |
使用例
拡張子がtxtのファイルからhogeを検索する。
$ grep "hoge" *.txt
<P>または<p>のある行数を表示する。
$ grep -ci "<p>" index.shtml
httpdのプロセス情報を得る。
$ ps aux | grep "httpd"
ファイルを検索する
ファイルを検索する。
find [option] [path...] [expression]
| オプション | 説明 |
|---|---|
| -depth | ディレクトリ本体の前に、ディレクトリの内容を先に評価する |
| -follow | シンボリック・リンクの参照先を検索する |
| -xdev | 他のファイル・システムにあるディレクトリは探索しない |
判別式
| オプション | 説明 |
|---|---|
| -atime n | 最後にアクセスされたのがn日前のファイルを検索する |
| -empty | 空のファイルや中身のないディレクトリを検索する |
| -group gname | グループ名がgnameのファイルを検索する(ID番号も指定可) |
| -mmin n | データが最後に修正されたのがn分前のファイルを検索する |
| -mtime n | データが最後に修正されたのが、n日前のファイルを検索する |
| -name pattern | ファイル名がpatternと同じファイルを検索する。ワイルド・カードを用いることができる |
| -perm mode | ファイルのアクセス権がmodeであるファイルを検索する。modeには8進数を用いることができる |
| -type c | 指定したファイル・タイプを検索する。cはdがディレクトリを、fが通常ファイルを、lがシンボリック・リンクを表す |
| -user uname | 所有者がunameになっているファイルを検索する(IDの数値も指定可能) |
| -size n[bckw] | nのサイズのファイルを検索する。nの後にcを付加すると単位がバイトに、kを付加するとKバイトになる。何も付けないとブロック(通常は1ブロック=512バイト)になる |
アクション
| オプション | 説明 |
|---|---|
| -exec command \; | 検索後、commandを実行する。このとき{}をコマンドで用いることにより、検索結果をコマンドに引き渡す |
| -ok command \; | -execと同様に検索後commandを実行する。ただし、ユーザーに問い合わせる |
| 検索結果を標準出力する。このとき結果をフルパスで表示する | |
| -fprint file | 検索結果をfileに書き出す。同名のファイルがある場合は上書きをする |
| -ls | 結果をファイル詳細付きで表示する。”ls -dils”と同様な形式を指定する |
使用例
ホームディレクトリ以下の拡張子shtmlのファイルをファイル詳細付きで検索する。
$ find ~/ -name "*.shtml" -ls444226 1 -rw-r--r-- 1 hoge hoge 86 Nov 16 02:40 /home/hoge/index.shtml
ホームのpublic.shtml以下で拡張子がgifでかつサイズが100Kバイト以上のファイルを探し、結果をresultファイルに書き込む。
$ find ~/public.shtml -name "*.gif" -and -size +100k -fprint result
tempを含むファイルを探し、削除を行う。
$ find ~/ -name "*temp*" -ok rm {} \;
参考
【 which 】コマンドを探す
【 grep 】文字列を検索する
【 find 】ファイルやディレクトリを検索する