理系学生日記

おまえはいつまで学生気分なのか

配下の全ディレクトリで同じ操作を行いたい

カレントディレクト配下にある全ディレクトリで同じ操作をする時って多いのではないでしょうか。 例えば作っている terraform 群が要求する Provider のバージョンをあげて、全部 terraform init して回らないといけなくなったりとか。

findxargs を組み合わせるとこんな感じでできます。 -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" \;