カレントディレクト配下にある全ディレクトリで同じ操作をする時って多いのではないでしょうか。
例えば作っている terraform 群が要求する Provider のバージョンをあげて、全部 terraform init
して回らないといけなくなったりとか。
find
と xargs
を組み合わせるとこんな感じでできます。 -mindepth 1
をしているのはカレントディレクトリを除外するためですが、! -name .
でも問題ないです。これ以外にも解法はきっとたくさんある。
$ find . -maxdepth 1 -mindepth 1 -type d | xargs -I% sh -c 'echo ==== % ====; cd %; terraform init'
もちろん、find
だけでもできますが。
$ find . -maxdepth 1 -mindepth 1 -type d ! -name vars ! -name test -exec sh -c "echo === {} ===; cd {}; terraform init" \;