を持っていない場合find
、あなたがしたことよりもはるかに良いことはできません: レベルを列挙します。任意のレベルまで下げる必要がある場合は、再帰関数を使用して実行できます (ただし、グローバル変数しかない場合、再帰は注意が必要です)。幸いなことに、既知の最大深度を使用すると、はるかに簡単になります。
改善の余地が少しあります。空白や特殊文字を含むファイル名がどこかにある場合に備えて、すべての変数置換を二重引用符で囲むことをお勧めします。$exe
また、が存在して実行可能かどうかをテスト…/*-*_test
していません (そのパターンが何にも一致しない場合はパターンである可能性があり、実行可能でないファイルである可能性もあります)。
for shle in shle */shle */*/shle */*/*/shle; do
for exe in "$shle"/*-*_test; do
test -x "$exe" && "$exe"
done
done
持っていない場合test
(ksh がある場合は組み込みですが、単純なシェルの場合は欠落している可能性があります)、パターンが展開されているかどうかを確認するためのより複雑なテストを行うことができます。
for shle in shle */shle */*/shle */*/*/shle; do
for exe in "$shle"/*-*_test; do
case "$exe" in
*/"*-*_test") :;;
*) "$exe";;
esac
done
done
(あなたが を持っていないことに驚いています。QNX にfind
は完全な POSIX スイートが付属していると思いましたが、QNX のエコシステムには詳しくありません。これは、小型デバイス用の OS の簡易バージョンである可能性があります。)