Linuxでよく使うコマンドのメモ -検索-

検索系のコマンドは使用頻度が高い割に使い方が覚え辛く、忘れてしまいがちなので、この機会にしっかり覚えたい。
 
以下、自分が仕事でよく使うコマンドのメモ。シェルはBashを使用。今回は検索系のコマンドに焦点を絞った備忘録。
 

whichコマンドでコマンドの場所を確認する

which [コマンド名]

コマンドの場所を表示する。各ユーザの.cshrcファイルで設定されたパスを表示する。
 

grepコマンドでファイル中の文字列を検索する

grep [ -[[AB] ]num ] [ -[EFGBchilnsvwx] ] [ -e pattern | -f file ] [ files... ]

ファイル中の文字列を検索する。
 

grepコマンドのオプション
-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 "&lt;p&gt;" index.shtml

 
httpdのプロセス情報を得る。

$ ps aux | grep "httpd"

 

findコマンドでファイルを検索する

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を実行する。ただし、ユーザーに問い合わせる
-print 検索結果を標準出力する。このとき結果をフルパスで表示する
-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 】ファイルやディレクトリを検索する

Article written by

コメントを残す