すべてを

▼開く

閉じる▲

ファイルの内容を表示して、ファイル中の文字列を検索する

○ファイル「boot.log」を表示して文字列を検索する

lessコマンドでファイルを指定する
$ less boot.log
Apr  6 13:44:46 localhost xinetd: xinetd startup succeeded
Apr  6 13:44:49 localhost sendmail: sendmail startup succeeded
Apr  6 13:44:49 localhost sendmail: sm-client startup succeeded
Apr  6 13:44:49 localhost gpm: gpm startup succeeded
Apr  6 13:44:52 localhost canna:  succeeded
Apr  6 13:44:52 localhost crond: crond startup succeeded
Apr  6 13:44:57 localhost xfs: xfs startup succeeded
Apr  6 13:44:57 localhost atd: atd startup succeeded
Apr  6 13:44:58 localhost firstboot: .
Apr  6 13:44:59 localhost firstboot:
Apr  6 13:44:59 localhost firstboot: XFree86 Version 4.3.0
Apr  6 13:44:59 localhost firstboot:  (Red Hat Enterprise Linux release: 4.3.0-35.EL)
/xinetd

lessコマンド実行中に、最下行に表示されるプロンプト「:」部分に「/」に続いて検索する文字列を入力してリターンを押す。すると、該当する部分に移動し、検索された文字列が反転表示される。該当する文字列がなかった場合は、「Pattern not found (press RETURN)」と表示される。表示画面の2行目以降にあるパターンにマッチする行を検索する。

検索制御のキー操作
次検索 n
元に戻る N
検索の終了 Esc-u

画面制御のキー操作
戻る 進む
1行戻る y 1行進む [Return]
半画面戻る u 半画面進む d
1画面戻る b 1画面進む [Space]
1行目に戻る g 最終行に進む G

情報表示のキー操作
行番号の表示 -N [Return]
行番号の非表示 -N [Return]
表示位置の表示 -m
表示位置の表示(詳細) -M

ファイルを子ディレクトリまで検索する

○文字列「kernel」を含まないファイルを子ディレクトリの中まで検索する

grepコマンドで-rLiオプション、検索文字列、ファイルを指定する
$ grep -rLi 'kernel' *
cron
cups/error_log
cups/access_log
cups/page_log
httpd/error_log
httpd/ssl_error_log
httpd/access_log
httpd/ssl_access_log
httpd/ssl_request_log
lastlog
mail/statistics
maillog
redhat-config-network
samba/smbd.log
samba/nmbd.log
scrollkeeper.log
secure
spooler
wtmp

grepコマンドで、-rオプションにLiオプションを付け、検索する文字列「'kernel'」、検索対象のファイル「*」(すべてのファイル)を指定すると、文字列「kernel」を含まないファイルをカレントディレクトリにあるすべてのディレクトリの中から検索して表示する。検索する文字列は、引用符「'」で囲むこと。

grepコマンドのオプション
-r ディレクトリを再帰的に検索する
-L 指定文字列を含まないファイル
-i 大文字小文字の区別をしない

空のファイルを検索して削除する

○カレントディレクトリ下にある空のファイルを削除する

findコマンドでディレクトリと検索オプションを指定する
$ find . -type f -empty -exec rm {} \;

findコマンドで、検索するディレクトリ「.」検索する対象を指定する「-type」対象がファイルであることを示す「f」サイズが0を示す「-empty」、検索結果を引数としてコマンドを実行する「-exec」、実行するコマンド「rm {}」コマンドの終了を表す「\;」を指定すると、findコマンドにより検索された空のファイルが削除される。

実行させるコマンド部分「rm {} \;」の意味

rm 実行するコマンド
{} findの検索結果に置き換えられる部分
\; コマンドの終了(エスケープ文字「\」と終了記号「;」)

「{}」は、findの検索結果のファイル名で置き換えられる。「\」は、シェルが「;」を解釈するのを防ぐためのエスケープ文字で、「;」までがコマンド部分である。。

○削除の許可を求めながらコマンドを実行する

一度にコマンドを実行せずに、コマンドの実行許可を逐次求めながら行うには、「-exec」の代わりに「-ok」を指定する。コマンドを実行する場合は「y」、実行せずにスキップする場合は「n」を入力する。

findコマンドでディレクトリと検索オプションを指定する
$ find . -type f -empty -ok rm {} \;
< rm ... ./dirx/file2 > ? y

オプション 意 味
-type 検索対象の種類を指定する
f 検索対象の種類がファイルであることを示す引数
-empty 検索対象が空(サイズが0)
-exec 検索結果を引数としてコマンドを実行する
-ok コマンド実行時に逐次実行許可を求める

空のファイルを検索する

○カレントディレクトリ下にある空のファイルを検索する

findコマンドでディレクトリと検索オプションを指定する
$ find . -type f -empty -print
./.gconf/%gconf.xml
./.gconf/desktop/%gconf.xml
./.gconf/desktop/gnome/%gconf.xml
./.gconf/desktop/gnome/applications/%gconf.xml
./.gconf/apps/%gconf.xml
./.gconf/apps/panel/%gconf.xml

findコマンドで、検索するディレクトリ「.」検索対象の種類を指定する「-type」対象がファイルであることを示す「f」サイズが0を示す「-empty」、検索結果の表示「-print」を指定すると、ディレクトリにあるすべての空のファイルを表示する。

オプション 意 味
-type 検索対象の種類を指定する
f 検索対象の種類がファイルであることを示す引数
-empty 検索対象が空(サイズが0)
-print 検索結果のファイル名をフルパスで表示する

指定したグループに所有権があるファイルを検索して表示する

○グループ「mktg」に属するファイルを検索して表示する

findコマンドでディレクトリと検索オプションを指定する
$ find /work -group mktg -type f -print
/work/MKTG/Manual/fiel1

findコマンドで、検索するディレクトリ「/work」検索対象がグループであることを示す「-group」検索するグループ名「mktg」、検索結果の表示「-print」を指定すると、指定したディレクトリの下にあるすべてのファイルからグループmktgに属するファイルを検索してその場所を表示する。

○検索したファイルの詳細を表示する

検索したファイルの詳細を表示したい場合は、検索結果の表示の指示を「-print」から「-ls」に代えてコマンドを実行する。

findコマンドでディレクトリと検索オプションを指定する
$ find /work -group mktg -type f -ls
880617    4 -rw-------   1 guest    mktg          256  5月 30 21:58 /work/MKTG/Manual/fiel1

オプション 意 味
-group 検索対象のグループ名を指定する
-type 検索対象の種類を指定する
f 検索対象の種類がファイルであることを示す引数
-print 検索結果のファイル名をフルパスで表示する
-ls 検索結果のファイルの情報を詳細に表示する

指定したディレクトリからシンボリックリンクファイルを検索する

○「/home/masa」以下にあるすべてのシンボリックリンクファイルを表示する

findコマンドでディレクトリと検索オプションを指定する
$ find /home/masa -type l -print
./sfile1

findコマンドで、検索するディレクトリ「/home/masa」、検索対象の種類を指定する「-type」対象がシンボリックリンクであることを示す「l」検索結果の表示「-print」を指定すると、ディレクトリにあるすべてのシンボリックリンクファイルを表示する。

○検索したファイルの詳細を表示する

検索したファイルの詳細を表示したい場合は、検索結果の表示の指示を「-print」から「-ls」に代えてコマンドを実行する。

findコマンドでディレクトリと検索オプションを指定する
$ find /home/masa -type l -ls
472637    0 lrwxrwxrwx   1 masa     users          12  5月 16 18:06 ./sfile1 -> ./work/file1

オプション 意 味
-type 検索対象の種類を指定する
l 検索対象の種類がシンボリックリンクファイルであることを示す引数
-print 検索結果のファイル名をフルパスで表示する
-ls 検索結果のファイルの情報を詳細に表示する

指定したディレクトリにあるファイルを検索して削除する

○「/home/masa」にあるすべての「~」ファイルを削除する

findコマンドでディレクトリと検索オプションを指定する
$ find . -name \*~ -exec rm {} \;

findコマンドで、検索するディレクトリ「.」検索対象がファイル名であることを示す「-name」検索するファイル名「\*~」、検索結果を引数としてコマンドを実行する「-exec」、実行するコマンド「rm {}」コマンドの終了を表す「\;」を指定すると、findコマンドにより検索されたファイルが削除される。意図しないファイルを削除しないために、事前に同じ条件で検だけ実行して確認しておくとよい。

実行させるコマンド部分「rm {} \;」の意味

rm 実行するコマンド
{} findの検索結果に置き換えられる部分
\; コマンドの終了(エスケープ文字「\」と終了記号「;」)

「{}」は、findの検索結果のファイル名で置き換えられる。「\」は、シェルが「;」を解釈するのを防ぐためのエスケープ文字で、「;」までがコマンド部分である。。

○削除の許可を求めながらコマンドを実行する

一度にコマンドを実行せずに、コマンドの実行許可を逐次求めながら行うには、「-exec」の代わりに「-ok」を指定する。コマンドを実行する場合は「y」、実行せずにスキップする場合は「n」を入力する。

findコマンドでディレクトリと検索オプションを指定する
$ find . -name \*~ -ok rm {} \;
< rm ... ./work/cat/a.txt~ > ? y
< rm ... ./work/cat/b.txt~ > ? n
< rm ... ./work/cat/c.txt~ > ? y
< rm ... ./work/cat/e.txt~ > ? n
< rm ... ./work/file3.txt~ > ? n
< rm ... ./work/dir2/dir2_1/file1~ > ? n
< rm ... ./work/dir3/file3.txt~ > ? n
< rm ... ./work/cut/List3~ > ? n
< rm ... ./work/cut/hdni1.txt~ > ? n
< rm ... ./work/cut/hdni2.txt~ > ? n
< rm ... ./work/cut/hdni3.txt~ > ? n
< rm ... ./work/cut/hdni4.txt~ > ? y
< rm ... ./work/cut/hdni1-.txt~ > ? n

オプション 意 味
-name 検索対象をファイル名で指定する
-exec 検索結果を引数としてコマンドを実行する
-ok コマンド実行時に逐次実行許可を求める

指定したディレクトリにあるファイルを検索する

○カレントディレクトリ下にあるすべての「~」ファイルを検索する

findコマンドでディレクトリと検索オプションを指定する
$ find . -name \*~ -print
./work/cat/a.txt~
./work/cat/b.txt~
./work/cat/c.txt~
./work/cat/e.txt~
./work/file3.txt~
./work/dir2/dir2_1/file1~
./work/dir3/file3.txt~
./work/cut/List3~
./work/cut/hdni1.txt~
./work/cut/hdni2.txt~
./work/cut/hdni3.txt~
./work/cut/hdni4.txt~
./work/cut/hdni1-.txt~

findコマンドで、検索するディレクトリ「.」検索対象がファイル名であることを示す「-name」検索するファイル名「\*~」、検索結果の表示「-print」を指定すると、ディレクトリにあるすべてのチルダファイル(ファイル名の末尾にチルダ「~」が付くバックアップファイル)を表示する。

オプション 意 味
-name 検索対象をファイル名で指定する
-print 検索結果のファイル名をフルパスで表示する

指定したファイルを検索して表示する

○カレントディレクトリ下にあるファイル「file1」を検索して表示する

findコマンドでディレクトリと検索オプションを指定する
$ find . -name file1 -print
./work/dir1/file1
./work/file1
./work/dir2/dir2_1/file1
./work/dir2/file1
./work/dir3/file1

findコマンドで検索するディレクトリ「.」(カレントディレクトリ)、検索対象をファイル名で指定することを示す「-name」検索するファイル名「file1」、検索結果の表示「-print」を指定すると、指定したカレントディレクトリの下にあるすべてのファイルから「file1」を検索してその場所を表示する。

オプション 意 味
-name 検索対象をファイル名で指定する
-print 検索結果のファイル名をフルパスで表示する

指定したユーザに所有権があるファイルを検索する

○ユーザ「guest」が所有するファイルを検索する

findコマンドでディレクトリと検索オプションを指定する
$ find /work -user guest -type f -print
/work/MKTG/Manual/fiel1

findコマンドで、検索するディレクトリ「/work」検索対象がユーザであることを示す「-user」検索するユーザ名「guest」、検索結果の表示「-print」を指定すると、指定したディレクトリの下にあるすべてのファイルからユーザguestが所有するファイルを検索してその場所を表示する。

○検索したファイルの詳細を表示する

検索したファイルの詳細を表示したい場合は、検索結果の表示の指示を「-print」から「-ls」に代えてコマンドを実行する。

findコマンドでディレクトリと検索オプションを指定する
$ find /work -user guest -type f -ls
880617    4 -rw-------   1 guest    mktg          256  5月 30 21:58 /work/MKTG/Manual/fiel1

オプション 意 味
-user 検索対象のユーザ名を指定する
-type 検索対象の種類を指定する
f 検索対象の種類がファイルであることを示す引数
-print 検索結果のファイル名をフルパスで表示する
-ls 検索結果のファイルの情報を詳細に表示する

指定した文字列(大文字小文字の区別なし)を含まないファイルを検索する

○文字列「kernel」を含まないファイルを大文字小文字の区別なしで検索する

grepコマンドで-Liオプション、検索文字列、ファイルを指定する
$ grep -Li 'kernel' *
canna
cron
cups
gdm
httpd
lastlog
mail
maillog
redhat-config-network
samba
scrollkeeper.log
secure
spooler
squid
vbox
wtmp

grepコマンドで、-Lオプションにiオプションを付け、検索する文字列「'kernel'」、検索対象のファイル「*」(すべてのファイル)を指定すると、文字列「kernel」を含まないファイルを大文字小文字の区別なく検索して表示する。検索する文字列は、引用符「'」で囲むこと。

grepコマンドのオプション
-L 指定文字列を含まないファイル
-i 大文字小文字の区別をしない

指定した文字列(大文字小文字の区別なし)を含むファイルを検索する

○文字列「kernel」を含むファイルを大文字小文字の区別なしで検索する

grepコマンドで-liオプション、検索文字列、ファイルを指定する
$ grep -li 'kernel' *
XFree86.0.log
XFree86.0.log.old
XFree86.1.log
boot.log
dmesg
ksyms.0
ksyms.1
ksyms.2
ksyms.3
ksyms.4
ksyms.5
ksyms.6
messages
up2date

grepコマンドで、-lオプションにiオプションを付け、検索する文字列「'kernel'」、検索対象のファイル「*」(すべてのファイル)を指定すると、文字列「kernel」を大文字小文字の区別なく検索してファイルを表示する。検索する文字列は、引用符「'」で囲むこと。

grepコマンドのオプション
-l 指定文字列を含むファイル
-i 大文字小文字の区別をしない

指定した文字列を含まないファイルを検索する

○文字列「kernel」を含まないファイルを検索する

grepコマンドで-Lオプション、検索文字列、ファイルを指定する
$ grep -L 'kernel' *
XFree86.0.log
XFree86.0.log.old
XFree86.1.log
canna
cron
cups 
gdm
httpd
lastlog
mail
maillog
redhat-config-network
samba
scrollkeeper.log
secure
spooler
squid
vbox
wtmp

grepコマンドで、-Lオプションに検索する文字列「'kernel'」、検索対象のファイル「*」(すべてのファイル)を指定すると、文字列「kernel」を含まないファイルを表示する。検索する文字列は、引用符「'」で囲むこと。

grepコマンドのオプション
-L 指定文字列を含まないファイル

指定した文字列を含むファイルを検索する

○文字列「kernel」を含むファイルを検索する

grepコマンドで-lオプション、検索文字列、ファイルを指定する
$ grep -l 'kernel' *
boot.log
dmesg
ksyms.0
ksyms.1
ksyms.2
ksyms.3
ksyms.4
ksyms.5
ksyms.6
messages
up2date

grepコマンドで、-lオプション、検索する文字列「'kernel'」、検索対象のファイル「*」(すべてのファイル)を指定すると、カレントディレクトリにある文字列「kernel」を含むファイルを表示する。検索する文字列は、引用符「'」で囲むこと。

grepコマンドのオプション
-l 指定文字列を含むファイル

●grepコマンドは大文字と小文字を区別する

grepコマンドは、大文字と小文字を区別するので、次のコマンドの結果は異なるものとなる。

$ grep -l 'Kernel' *
XFree86.0.log
XFree86.0.log.old
XFree86.1.log
boot.log
dmesg
messages