Linuxでのファイル検索、findコマンドとlocateコマンドです。
findコマンド
指定された条件を満たすファイルを検索します。
find 検索ディレクトリ 式
式 の箇所には次のようなものが指定できます。
その他もありますので詳細については、expression を参照して下さい。
-name “ファイル名”
指定したファイル名で検索します。
ファイル名には *、? のメタキャラクタが使用できます。
-mmin 分
ファイルの最終アクセス日時が指定の分数前のものを検索します。
-mmin 5 では、ファイルの最終アクセス日時が 5分前のものを検索します。
-mtime 日
ファイルの最終アクセス日時が指定の日数前のものを検索します。
-mtime 3 では、ファイルの最終アクセス日時が 3日前のものを検索します。
次のように実行します。
find /home/test -name "*.txt" -mtime 3
locateコマンド
locateコマンドは事前に構築したファイル名データベースから検索します。
事前に構築されたデータベース内からしか検索出来ませんが、高速にファイル検索が行えます。
インストールです。root で下記実行します。
CentOS yum -y install mlocate. Ubuntu apt-get install mlocate.
事前のファイル名データベースの構築は、root で下記実行します。
updatedb
検索は次のようにファイル名を指定します。
ファイル名には *、? のメタキャラクタが使用できます。
locate ファイル名
/tmp等のように、特定のファイル/ディレクトリを検索対象から除外したい場合は、
/etc/updatedb.conf で下記を指定します。
PRUNEFS : 除外するファイルシステム
PRUNENAMES : 除外するディレクトリ
PRUNEPATHS : 除外するパス
例えば、パソコン鳥の CentOS6.6環境では以下のようになっています。
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs" PRUNENAMES = ".git .hg .svn" PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"
コメント