覚書 : 特定のディレクトリや拡張子以外をコピー(cp)する方法

2019年5月7日Linux,TECHNOLOGY

例えば、以下のような構造をしたディレクトリ(フォルダ)があるとして、それぞれのディレクトリ内に存在するsrc/を除いたファイルをコピーしたいとき、cpコマンドとfindコマンドを組み合わせて書くこともできますが、rsyncを使ったほうが早いです。

folder1/
  ┣ App1/
  ┃  ┣ bin/
  ┃  ┗ src/
  ┣ App2/
  ┃  ┣ bin/
  ┃  ┗ src/
  ┣ App3/
  ┃  ┣ bin/
  ┃  ┗ src/
  ┣ App4/
  ┃  ┣ bin/
  ┃  ┗ src/
  ┗ App5/
      ┣ bin/
      ┗ src/

をfolder2に以下のようにコピーしたい。

folder2/
  ┣ App1/
  ┃  ┗ bin/
  ┣ App2/
  ┃  ┗ bin/
  ┣ App3/
  ┃  ┗ bin/
  ┣ App4/
  ┃  ┗ bin/
  ┗ App5/
      ┗ bin/

 

以下のようにコマンドを実行することでうまくいきます。

$ rsync -av folder1/ folder2/ --exclude "*/bin/"

 

それに加えて特定の拡張子(*.obj)のファイルを除外したい場合は以下のようなコマンドを書くことでいけます。

$ rsync -av folder1/ folder2/ --exclude "*/bin/" --exclude "*.obj"

 

参考資料

HTMLファイルだけを別のディレクトリにコピーする | 渋谷生活

 

新しいLinuxの教科書

新しいLinuxの教科書

三宅 英明, 大角 祐介
2,791円(04/13 08:03時点)
Amazonの情報を掲載しています
[改訂第3版]Linuxコマンドポケットリファレンス

[改訂第3版]Linuxコマンドポケットリファレンス

沓名 亮典
2,618円(04/13 09:15時点)
Amazonの情報を掲載しています