% find /var/log/trafficserver -name '*.old' -exec gzip {}\;
find: missing argument to `-exec'
簡単なscriptを作っていたところ、上記のようなエラーメッセージが。
ちょいと調べてみると、\;の前にはブランクが必要とのこと。
https://www.bigegg.net/post/656916185/%E3%81%A4%E3%81%84%E5%85%88%E6%97%A5%E3%81%8B%E3%82%89find%E3%81%AEexec%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C%E5%AE%9F%E8%A1%8C%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F
これぐらいで躓くとは本当に情けない。
でもこれならxargsで繋いだほうがいいかなと思ったのだけれど、そもそも-exec
とxargs
の違いがわからなかったので、またもWebを検索してみた。
非常に長い引数のリストはコマンドに渡すことが出来ない[1]が、xargsを使うことによって引数リストをシステムが受け入れられるサイズに分割してコマンドに渡してくれる。
http://ja.wikipedia.org/wiki/Xargs
今回のようなミス(といっても自分の注意不足だけれども)のようなことを考えると、xargsを常用するのが良いのかな? 使い分けるなどのような明確な基準があるのだろうか?
とりあえずshell scriptビギナーから脱したいなぁ・・・