これでうまくいくはずです-
オプションを使用find -type d
すると、検索検索をディレクトリに制限できます。を指定するpattern with -not -name
と、一致したディレクトリを無視するのに役立ちます。-exec option
見つかったすべてのディレクトリに対してシェルスクリプトを開始するのに役立ちます。{} \;
exec がディレクトリごとにシェルスクリプトを一度に実行するためのバッファースペースを意味します。-depth n
n ディレクトリ レベルまで確実に下ります。
find . -not -name ref\* -not -name .\* -type d -depth 1 -exec ./script.sh {} \;
アップデート:
残念ながら、2 つのユーザー駆動パラメーターの処理を忘れていました。私は専門家ではないかもしれませんが、私が考える最も簡単な方法は、検索結果をファイルに送信し、そのファイルに対して for ループを実行することです。
このようなもの -
[jaypal~/Temp]$ find . -not -name ref\* -not -name .\* -type d -depth 1 > dirlist
[jaypal~/Temp]$ for i in dirlist; do ./script.sh $i param1 param2; done
ユーザー主導のパラメーターを渡す別の方法 (@dma_k の提案による)
[jaypal~/Temp]$ find . -not -name ref\* -not -name .\* -type d -depth 1 | xargs script.sh param1 param2