Software Design 2011年 05月号より。
いつも忘れて分からなくなってしまうのでメモ。
◆locate
# locate ファイル名
locateは高速検索が可能。というのも事前にインデックスを作成しているから。
centosでは、cron(/etc/cron.daily/mlocate.cron) によって、毎日DBが更新されている。
なので、当日に作成されたファイル等は検索出来ない。
また、インデックスを貼っていないディレクトリからは検索出来ない。
◆find
# find 対象ディレクトリ -name ファイル名
検索対象は、ファイル名だけじゃなく、下記のようなものも可能。
ファイル名 -name
ファイルパス名 -path
ファイル日付 -mtime
ファイル所有者 -uid
ファイルサイズ -size
ファイルタイプ -type
ファイル権限 -perm
inode番号 -inum
ハードリンク数 -links
条件の組み合わせも可能。
[条件否定]
# find . ! -name foo
[and条件]
# find . -name foo -type d
[or条件]
# find . -name foo -o -type d
---
Tips : find で見つけたファイルをコマンド実行の引数に渡す。
検索したファイル名をtailに渡す(1)
# find . -type f -exec tail {} \;
{} の部分にfindで見つけたファイル名が入る。\;は-execの決まりごと。
検索したファイル名をtailに渡す(2)
# find . -type f | xargs tail
(1)と(2)の違いは、-exec は1ファイルごとにtailが実行されるのに対して、
xargs はまとめてtailの引数に渡される。
※"-n"オプションで渡す数を指定可能。また、"-i"オプションを使えば、-exec同様"{}"で渡す位置を指定可能。
検索したファイル名をtailに渡す(3)
forループを使用して可読性を高める。
for f in `find . -type f`
do
tail $f
done
Tips : 特定のファイルより更新日時が早いファイルを探す。
# find . -newer ファイル名
---
おしまい。
以下、一応リンク。
第一特集:「Vim&Emacsをちゃんと使えてますか?」を参考にさせて頂きました。
0 件のコメント:
コメントを投稿