[JM:01162] Re: findの挙動について

アーカイブの一覧に戻る

SATOH Fumiyasu fumiy****@osste*****
2015年 11月 4日 (水) 19:02:27 JST


さとうふみやす @ OSSTech です。

At Wed, 4 Nov 2015 18:35:51 +0900,
稲原宗能 wrote:
> findで簡単なシェルを書いていたのですが
> http://linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.htmlでは
> -exec *command* ; *command* を実行する。*command* の返り値が 0 ならば、真を返す。
> 
> と記述してあるにもかかわらず、-exec内でこけてもマッチングさえしていれば真を返してしまいました。

find(1) の終了コードが真 (0) を返すという意味ではありませんが、
そこは大丈夫でしょうか?

> ネットワークトラブルでscpが失敗した際、エラーが出なかったことから気付きました

エラーとは具体的に何でしょうか? find は -exec で指定したコマンドが
0 以外を返したかどうかで自身のエラーとは判定はしません。
-exec 式(expression)の評価結果が真が偽になるだけです。

> コマンドはfind ./ -name test -exec scp -p ’{}’ [hostname]:/tmp \;です

scp が失敗した時点で中断したいのであれば、こんな感じ?

  find ./ -name test \( -exec scp -p ’{}’ [hostname]:/tmp \; -o -quit \)

ただし find 自身の終了コードを制御できないので、
スクリプトでエラー判定するには、別途工夫が必要でしょう。
xargs を使っても無理っぽいので、ちょっと面倒そうですね。

-- 
-- Name: SATOH Fumiyasu @ OSS Technology Corp. (fumiyas @ osstech co jp)
-- Business Home: http://www.OSSTech.co.jp/
-- GitHub Home: https://GitHub.com/fumiyas/
-- PGP Fingerprint: BBE1 A1C9 525A 292E 6729  CDEC ADC2 9DCA 5E1C CBCA




linuxjm-discuss メーリングリストの案内
アーカイブの一覧に戻る