1.02.2標準
current以下の*.conf通常ファイルをfindで検索する。
検索結果を可能な範囲でまとめてchmod g-wへ渡す。
適切なコマンドはどれか。
× 不正解
find -exec command {} +は複数の検索結果をまとめてコマンド末尾へ渡す。\;は通常1件ずつ実行する。
詳細解説
誤り
find current -type f -name '*.conf' -exec chmod g-w置換対象{}と、-exec式を終える記号がない。
誤り。実行コマンドの引数へ検索結果を挿入する{}と、-exec式の終端がないため式が完成しない。
誤り
find current -type f -name '*.conf' -exec chmod g-w {} \;各ファイルごとにchmodを1回ずつ実行し、まとめて渡す要件ではない。
誤り。構文としては有効だが、\;終端は結果ごとにchmodを起動し、まとめて渡す要件を満たさない。
誤り
find current -type f -name '*.conf' -exec {} chmod g-w +-execの直後には実行するコマンドを置くため、引数の順序が不正である。
誤り。{}は実行するコマンド名の位置ではなく、chmodの引数として結果パスを受ける位置へ置く。
正しい
find current -type f -name '*.conf' -exec chmod g-w {} +{}を複数の検索結果で置換し、可能な範囲でまとめてchmodへ渡す。
正しい。chmod g-wの後の{}へ複数パスを置換し、+終端でまとめて実行する。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); touch "$tmp/a.conf" "$tmp/b.conf"; chmod 660 "$tmp/a.conf" "$tmp/b.conf"; find "$tmp" -type f -name '*.conf' -exec chmod g-w {} +; stat -c '%a' "$tmp/a.conf" "$tmp/b.conf"; rm -rf "$tmp"期待される結果
640
640理解のポイント
- {}は検索結果
- +はまとめて実行
- \;は1件ずつ
確認時の注意
- 確認環境: GNU findutils 4.x / GNU chmod / 一時ファイル
- 検証では一時ファイルのgroup writeだけを変更する。
基礎のおさらい
特殊な名前の安全性
-execは空白や改行を含むパスも引数境界を保って渡せる。
起動回数
+終端は引数長制限の範囲でまとめるため、1件ずつの\;よりプロセス起動を減らせる。
問題IDKL-101-405
確認環境GNU findutils 4.x / GNU chmod / 一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告