[自分用メモ][Linux] find: missing argument to `-exec’ が出力されてしまう。

AIX、UNIX、Linux
% 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で繋いだほうがいいかなと思ったのだけれど、そもそも-execxargsの違いがわからなかったので、またもWebを検索してみた。

非常に長い引数のリストはコマンドに渡すことが出来ない[1]が、xargsを使うことによって引数リストをシステムが受け入れられるサイズに分割してコマンドに渡してくれる。

http://ja.wikipedia.org/wiki/Xargs

今回のようなミス(といっても自分の注意不足だけれども)のようなことを考えると、xargsを常用するのが良いのかな? 使い分けるなどのような明確な基準があるのだろうか?

とりあえずshell scriptビギナーから脱したいなぁ・・・

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました