検索系のコマンドは使用頻度が高い割に使い方が覚え辛く、忘れてしまいがちなので、この機会にしっかり覚えたい。
以下、自分が仕事でよく使うコマンドのメモ。シェルは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" -ls
444226 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 】ファイルやディレクトリを検索する