Linuxでのファイル検索

スポンサーリンク
スポンサーリンク

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"

参考

expression
ファイル/ディレクトリの検索
Man page of LOCATE

コメント

タイトルとURLをコピーしました