リスト内のすべてのファイルを実行する

リスト内のすべてのファイルを実行する

make実行時に「001」、「002」などという名前の複数の実行ファイルを生成するソースツリーがあります。私はソースツリーでこれらのすべての実行可能ファイルを見つけて実行するスクリプトを作成しようとしています。これまで私はこれを持っています:

find build/ -type f -executable | ack --nocolor "\d{3}$"

正しく実行したい実行可能ファイルがリストされています。

私の質問は、これらすべてをどのように実行しますか?xargsとの組み合わせがexec可能だと思いましたが、exec現在のシェルをコマンドで置き換えたいと思いますが、これは私が望むものではありません。

答え1

これはうまくいくかもしれません

find build/ -type f  -executable -exec sh -c 'exec "$1"' _ {} \;

または001..002ファイルのみフィルタリング

find build/ -type f -name '*[0-9][0-9][0-9]' -executable  -exec sh -c 'exec "$1"' _ {} \;

答え2

努力する:

$ find build/ -type f -executable | ack --nocolor "\d{3}$" |
while read prog
do
    "$prog"
done

答え3

この機能がうまく実行する機能の1つは、find基準に合ったファイルを選択することであるため、3桁の数字で構成されるファイルを選択するために使用できます。その後、次のような単純な形式を使用できます。

find build -name "[0-9][0-9][0-9]" -type f -executable -exec {} ";"

-regex '.*/\d{3} 適切な方法を見つけたら、-regextypeそれを使用することもできます。

答え4

find -type f -name '00[123]' -exec env - {} \;

さまざまな実行可能ファイルに対して宣言したい環境を追加します。2>/dev/null実行できない00[123]ファイルがありますが、これについて聞きたくない場合もあります。

関連情報