あるディレクトリに、あるディレクトリがあった時だけcpコマンドを実行する

何を言ってるんだという感じだが、複数プロダクトを持っていて同じようなディレクトリ構成があり、あるプロダクトで作成した新規ファイルを他のプロダクトの全てにコピーしたい時がある。 1 つ 1 つのプロダクトを開いてコピペすると面倒なので、コマンド一発で複数のプロダクトを検索して、あるディレクトリがあった時のみファイルをコピーする時の備忘録。

find ~/git/* -type d -name scripts -exec cp ./scripts/hoge.js {} \;

やってること

  • ~/git/以下のディレクトリを検索
  • scripts というディレクトリがあったら cp コマンドを実行
  • ./scripts/hoge.js というファイルを見つけたディレクトリにコピー(ファイルがすでにあったら上書きされる)

ちなみに、assets ディレクトリがあったら assets/images にファイルをコピーするには以下となる

find ~/git/* -type d -name assets -exec cp ./assets/images/hoge.png {}/images \;