見つかったファイルを繰り返しスクリプトに渡す方法

見つかったファイルを繰り返しスクリプトに渡す方法

次のように .done で終わらないファイルを検索します。

find -type f -not -name \*.done -execdir myscript {} \;

さて、私がやりたいことは次のとおりです。

-見つかった各ファイルをmyscriptに渡す

-sourceコマンドでmyscript内の各ファイルをsourceする

- ソースファイルごとにmyscriptを実行する

注: 見つかったファイルごとに 1 回ずつ、myscript を繰り返し実行します。複数のファイルに対して同時に myscript を実行するつもりはありません。つまり、基本的には見つかったファイルをループして、myscript でソース化しようとしています。どうすればこれを実現できますか?

答え1

コマンドは見つかったファイルごとにfind実行されmyscript、ファイル名が最初のコマンドライン引数として に渡されますmyscript

のファイルをソースにしたいのでmyscriptmyscriptコードに以下を含める必要があります。

. ./"$1"

ノート:

  • myscriptシェルによって解釈されるものと想定します。
  • あなたが言ったsourceように、.よりポータブルです。
  • ./"$1"あなたが を使用したので、私も を使用しました-execdirそうみたいですの実装によっては、の後に が置換される文字列にfind含まれない場合があります。その場合は、./{}-execdirこの事故発生する可能性があります。明示的に追加すると、./これを防ぐことができます。

関連情報