1.02.4標準
/srv/import以下に数秒前に作られた*.readyを、データベース更新を待たず確実に検索する。
通常ファイルだけを対象にする。
適切なコマンドはどれか。
× 不正解
findは指定した開始点を実行時に走査するため、locateデータベースの更新を待たず現在の状態を検索できる。
詳細解説
誤り
locate '/srv/import/*.ready'データベース更新前の新規ファイルは結果に含まれない可能性がある。
誤り。locateの検索時点でDBが更新されていなければ、数秒前に作られたファイルを確実には返せない。
誤り
whereis readyコマンド関連ファイルの既定配置を検索する。
誤り。whereisはreadyというコマンドの関連配置を探す用途で、/srv/importの新着ファイル走査ではない。
正しい
find /srv/import -type f -name '*.ready'指定ディレクトリをその場で走査し、現在存在する通常ファイルを検索する。
正しい。findは/srv/importをその場で走査し、-type fと-nameの両条件を満たす現在の項目を返す。
誤り
which readyPATH上の実行可能ファイルだけを検索する。
誤り。whichは実行可能コマンド用のPATH検索で、任意の.ready通常ファイルを対象にしない。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); touch "$tmp/new.ready" "$tmp/skip.txt"; find "$tmp" -type f -name '*.ready' -printf '%f\n'; rm -rf "$tmp"期待される結果
new.ready理解のポイント
- findはlive traversal
- locateはDB snapshot
- -type fで通常ファイル
確認時の注意
- 確認環境: GNU findutils 4.x / 一時ディレクトリ
基礎のおさらい
鮮度と速度
locateは索引で高速、findは現在状態を直接見られる代わりに探索範囲が大きいほど時間がかかる。
開始点の限定
findの開始点を必要なディレクトリへ絞ると、不要な走査や権限エラーを減らせる。
問題IDKL-101-424
確認環境GNU findutils 4.x / 一時ディレクトリ
最終技術確認2026-08-13
誤り・権利侵害を報告