findからcommandXへのパイピングコマンドについて混乱していますか?

findからcommandXへのパイピングコマンドについて混乱していますか?

run.sh次のスクリプトがあります。

#!/bin/bash
FILES=$(find corpus/ -type f)
for i in $FILES
do
    ./individual.sh $i
done

問題なく実行されます。

各ファイルをfindからに転送したいと思います./individual

私はこれを行うことができると思います:

find corpus/ -type f | ./individual.sh

しかし、試してみると、""という名前のファイルだけがパイプで接続されます(エラーが発生しました)。

正しい構文は何ですか?

答え1

findオプションを使用する必要があります-exec

find corpus/ -type f -exec ./individual.sh {} \;

見つかった一致ごとにfindpersonal.shを実行し、それを{}見つかったファイル名に置き換えます。\;これでexec検索が終了します。

パイプが機能しない理由は、find出力がパラメータでindividual.shはなくSTDINを介して提供されるためです。スクリプトを使用するには、STDINを介して入力またはパラメータを照会する方法を知る必要があります。

関連情報