Linuxコマンド  >  F  >  find
find
2006/06/03

find コマンドの使用例です。 find コマンドはいろいろな条件でファイルを検索することができるため非常に便利です。

◆環境
OS Linux 2.6.9-22.EL

find のバージョンの確認

find のバージョンを確認します。

$ find --version
GNU find version 4.1.20

ファイル名を指定して検索

ファイル名が「.c」で終わるファイルを検索します。

$ find -name "*.c"
./LC090/LC090_main.c
./LC091/LC091_main.c
./LC092/LC092_main.c
./LC093/LC090_main.c
./LC094/LC040.c
./LC095/LC095_main.c
./LC096/LC096_main.c
./LC097/LC097_main.c
./LC098/LC048.c
./LC099/LC099.c
./LC0991/LC099.c

時間を指定して検索

1日前から今までに修正されたファイルを検索します。

$ find -mtime -1 -ls
4030963    4 drwxr-xr-x   4 ymusr    ymmusr       4096  6月  3 16:38
 ./tool
4032172    4 -rwxr--r--   1 ymusr    ymmusr        651  6月  3 16:38
 ./tool/unchk.sh
3949315    4 -rw-r--r--   1 ymusr    ymmusr        604  6月  3 16:37
 ./tool/unchk.log.20060603

9分前から今までに修正されたファイルを検索します。

$ find -mmin -9 -ls
4030963    4 drwxr-xr-x   4 ymusr    ymmusr       4096  6月  3 16:38
 ./tool
4032172    4 -rwxr--r--   1 ymusr    ymmusr        651  6月  3 16:38
 ./tool/unchk.sh

$ find -mmin -10 -ls
4030963    4 drwxr-xr-x   4 ymusr    ymmusr       4096  6月  3 16:38
 ./tool
4032172    4 -rwxr--r--   1 ymusr    ymmusr        651  6月  3 16:38
 ./tool/unchk.sh
3949315    4 -rw-r--r--   1 ymusr    ymmusr        604  6月  3 16:37
 ./tool/unchk.log.20060603

「許可がありません」を表示しないで検索

検索パスにアクセス権が無いフォルダがあると「許可がありません」がいっぱい出ますが、これを表示しないようにします。

$ (find / -name "httpd.conf" -print >/dev/tty) >& /dev/null
/etc/samba/temp/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf


2012/10/03 追記

◆環境
OS CentOS Linux version 2.6.18-308.13.1.el5

find のバージョンの確認

find のバージョンを確認します。

# find --version
GNU find version 4.2.27
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION SELINUX

指定した文字列を含むファイルを検索する(findとgrepの合わせ技)

ファイル名が「.conf」で終わるファイルを検索し、「exten」が含まれている行を表示します。

# find /etc -name "*.conf" | xargs grep "exten"
/etc/asterisk/res_ldap.conf:; extensions = ldap
/etc/asterisk/res_ldap.conf:[extensions]
:

grepは対象ファイルが複数ある場合、先頭にファイル名を表示しますが対象ファイルが1つしかない場合はファイル名を表示しません。

# find /etc/asterisk/res_ldap.conf -name "*.conf" | xargs grep "exten"
; extensions = ldap
[extensions]
:

ファイル名が表示されないと不便です。 grepの引数に/dev/nullを指定すると、検索結果のファイルが1つでも、引数は/dev/nullを入れて2つになるのでファイル名が表示されるようになります。

# find /etc/asterisk/res_ldap.conf -name "*.conf" | xargs grep "exten" 
/dev/null
/etc/asterisk/res_ldap.conf:; extensions = ldap
/etc/asterisk/res_ldap.conf:[extensions]
:

grepの引数に-nを追加するとファイル内の行番号が表示されます。

# find /etc/asterisk/res_ldap.conf -name "*.conf" | xargs grep "exten" 
/dev/null -n
/etc/asterisk/res_ldap.conf:9:; extensions = ldap
/etc/asterisk/res_ldap.conf:47:[extensions]
:

▲ PageTop  ■ Home


Copyright (C) 2012 ymlib.com