コマンド出力結果にcdして何かするワンライナー
動機
とあるコマンドで標準出力されたディレクトリに1個1個cdしてコマンドを打つ
みたいなことを(できればワンライナーで)やりたい。
最初に思いついた案
ls dir | xargs -n 1 cd && pwd
※実際打ったコマンドはls dir
ではない
な感じでxargs + cdはできないようでした。(cdがbuiltinコマンドのせい?)
自分で考えた案
こうするのが良さそう。
for d in $(ls dir); do cd $d && pwd; done
※実際打ったコマンドはls dir
ではない(二回目)
とあるサイトに素晴らしい答えが
askubuntu.com を見ました。
# ベストアンサー。すげぇ・・・ printf '"%s"\n' */ | xargs -L 1 bash -c 'cd "$1" && pwd' _ # find使うと楽だよという例。今回は使えないのですが、一応参考程度に。 find . -type d -execdir pwd \;