LinuxServer ファイルシステム ファイルやコマンドの検索

この記事は2012年11月7日に書かれたものです。内容が古い可能性がありますのでご注意ください。


LinuxServer ファイルシステム ファイルやコマンドの検索

長く稼働しているシステムではディレクトリが増えたり、階層が深くなって行き、
保存したファイルが行方不明になることが起こりがちです。
次にあげるコマンドを使用することでファイルの検索を行えます。

findコマンド

findコマンドは、指定したディレクトリ以下から、検索条件にマッチするファイルやディレクトリを検索します。

[コマンド書式]
# find 検索開始ディレクトリ 検索条件 コマンド

検索開始ディレクトリを指定しない場合は、カレントディレクトリを検索します。
さらに、検索条件にメタキャラクタ(*や.など)が使え、検索条件にマッチしたファイルに
対してコマンドが実行できます。

findコマンドの検索式は次のとおりです

検索式 説明
-name ファイル名 検索するファイルを指定します。メタキャラクタとして *、?、[・] を使用することが可能です。
メタキャラクタを使用してファイルを検索する場合は 引用符(””) などで囲みます。
-atime 日数 ファイルへの最終アクセス日を条件とします
-mtime 日数 ファイルの最終更新日を条件とします
-perm アクセス権 ファイルのアクセス権を条件とします
アクセス権の指定方法は数字でもシンボル表現でも構いません
-size ブロック/ファイルサイズ ブロックサイズまたはファイルサイズで検索します
ファイルサイズの末尾に’c’を付けるとファイルサイズとみなします
-type ファイルの種類 ‘-type f’でファイル、’-type d’でディレクトリを検索します
-user ユーザ名 ファイルの所有者で検索します
-print 検索ファイルを表示します
-ls ファイルの種類 検索ファイルを’ls -l’コマンドと同じように表示します
-exec コマンド ; 検索結果に対しコマンドを実行します。
-exec コマンド ; 検索結果に対し、確認をした上でコマンドを実行します。

[コマンド]
#find -name “*.txt”
[実行例]カレントディレクトリで”*.txt”にマッチするファイルの検索結果を表示します
./hoge2.txt
./hoge1.txt
./hoge3.txt

[コマンド]
# find -atime 1
[実行例]カレントディレクトリで前日(1日前)にアクセスがあったファイルの検索結果を表示します
./.bash_logout
./hoge4.txt
./.ssh/known_hosts

locateコマンドとupdatedbコマンド

事前に作成したデータベースを使用してfindコマンドより高速に検索します

[コマンド書式]
locate 検索文字列

[コマンド]main.cfファイルを検索
# locate main.cf
[実行例]
/etc/postfix/main.cf
/usr/libexec/postfix/main.cf
/usr/share/doc/postfix-2.9.4/main.cf.default

locateコマンドで使用するデータベースの作成/更新には’updatedbコマンド’使用します。

updatedbコマンドに関する設定は/etc/updatedb.confファイルに記述されており、
cronコマンドを用いて定期的にupdatedbコマンドを実行しています。

[updatedb.conf] # cat /etc/updatedb.conf
PRUNEFS = “9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs 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 /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp”

PRUNEFS:データベースに登録しないファイルシステムを指定します
PRUNENAMES:データベースに登録しないファイル名を指定します
PRUNEPATHS:データベースに登録しないディレクトリ名を指定します

ページ:

1

2
  • このエントリーをはてなブックマークに追加

PAGE TOP