それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

find の -execオプションでよく間違うミス

長らく xargs だったが、-execオプションデビューしようとした、でも-execがうまく動かないので苦労した。

これは動かない。

find . -name '*.orig'  -exec echo {}\;

find: missing argument to `-exec'

\ は通らない。

なぜか?

-exec オプションは ; が終端文字

ただし、 ; は bashに解釈されるのでエスケープが必要
ただし、 {} は引数に展開されるので スペースで区切らないとダメ

だからこれは動く

find . -name '*.orig'  -exec echo {} \;

\の前のスペースが味噌。

こんなことに気づかず・・

たったこれだけの事に気づかず、 find の -exec オプションは動かない、なんだ面倒だと思い込んでました。すいません。


ポイント
 -exec コマンド {}(スペース)\;
 {} がファイル名に置換される。 \;で打ち止め。