Lから始まるLinux

2章34話
パイプ
2章35話 ファイル検索
もくじ
2章36話
バックグラウンド実行
ファイル検索
若木 みどり
あのファイルって どこにあったっけ… ファイル検索ができると 便利なんだけどなぁ
若木 しげる
もちろんできるよ! 今回はファイル検索コマンドを 見ていこう!
find コマンド
若木 しげる
find ファイル検索コマンドだよ 以下のように実行するんだ
find 起点パス 検索オプション
検索オプション意味
-name ファイル名指定されたファイル名を検索。メタ文字というワイルドカードと似た指定ができる
-type ファイル種別指定したファイル種別のファイルを検索(後述)
-user ユーザ名指定された所有ユーザのファイルを検索
-group グループ名指定された所有グループのファイルを検索
-size サイズファイルサイズが指定以上のファイルを検索
ファイル種別意味
f通常ファイル
dディレクトリ
lシンボリックリンク
若木 みどり
ちょっと扱いが難しそう…
若木 しげる
細かく条件を指定できるのがfind の特徴だけど初めてだと難しいよね
若木 しげる
いくつか例を出すから見てごらん
find コマンド動作
find /home -type f -name "diary"/home を起点に、diary という名前の通常ファイルを検索
find /usr/share -type f -name "*.txt"/usr/share を起点に、ファイル名が .txt で終わる通常ファイルを検索
find /tmp -user midori -group midori/tmp を起点に、所有者が midori で所有グループが midori のファイルを検索
find /var -size 100M/var を起点に、サイズが 100MB 以上のファイルを検索
若木 みどり(驚き)
へぇ…柔軟にファイルを探せるのね!
locate コマンド
若木 しげる
locate もファイル検索コマンドだよこちらはあらかじめ検索用データを作っておきそこからファイルを探すような動きをするんだ
locate [オプション]... パターン...
若木 みどり
find とどう違ってくるのかな?
若木 しげる
locatefind より高速な検索ができるけど指定されたパターンがパスに含まれているかどうかの簡単な条件でしか検索しかできないんだ
若木 みどり
ファイル名で探すことが多いので簡素でも十分役に立ちそう!
若木 しげる
また検索用データ作成後の変更は検索に反映されないという問題もあるんだ
若木 しげる
具体的には新しく作ったファイルが見つからなかったり削除済みのファイルが結果に表示されたりしてしまうよ
若木 みどり
それはちょっと困るね…
若木 しげる
updatedblocate の検索用データを作るよ
updatedb [オプション]...
若木 しげる
updatedb は1日1回などのタイミングで自動実行されるけど手動実行しても問題ないんだ
若木 しげる
sudo管理者権限でコマンドを実行するんだ検索用データは全ユーザ共通で使うのでこのデータの管理は管理者が行うよ手動実行する場合は以下のようにしよう!
sudo updatedb
若木 みどり
updatedb 実行直後にlocate を実行すると検索用データの情報が古い問題を回避できるね!
xargs コマンド
若木 しげる
xargs標準入力から受け取った内容をコマンドの引数にしてくれるんだ
xargs [オプション]... [コマンド]
若木 しげる
以下のように検索コマンドと一緒に使われることが多いよ
find ... | xargs コマンド
若木 みどり
どのように使えばいいんだろう?
若木 しげる
例えば、以下は /tmp にある所有者が midori のファイルを削除するよ
find /tmp -type -f -user midori | xargs rm
若木 みどり
find の結果をxargs に渡すとrm の引数にして実行してくれるんだね!
まとめ
若木 みどり
今回はファイル検索コマンドfindlocate を学んだよ!また xargs コマンドと組み合わせて見つかったファイルを処理する方法も知ったよ!
若木 しげる
findlocate にはそれぞれ特徴があるからかしこく使い分けよう!