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]
ファイルがありますが、これについて聞きたくない場合もあります。