日々常々

ふつうのプログラマがあたりまえにしたいこと。

antで複数ディレクトリのファイルをまとめたい

これを

├── hoge
│     ├── a
│     │     └── src
│     │         └── net
│     │             └── hogedriven
│     │                 ├── aaa.txt
│     │                 └── aab.txt
│     ├── b
│     │     └── src
│     │         └── net
│     │             └── hogedriven
│     │                 ├── baa.txt
│     │                 └── bab.txt
│     └── c
│         └── src
│             └── net
│                 └── fugadriven
│                     ├── caa.txt
│                     └── cab.txt

こうしたい。

├── dest
│     └── src
│         └── net
│             ├── fugadriven
│             │     ├── caa.txt
│             │     └── cab.txt
│             └── hogedriven
│                 ├── aaa.txt
│                 ├── aab.txt
│                 ├── baa.txt
│                 └── bab.txt

やりかた

$ cp -r hoge/*/* dest/

……で一発なんだけど。


これをantでしようとおもって。filesetのdirに*とか使えない?し……でこうなった。

  <target name="file-copy">
    <delete dir="dest" />
    <copy todir="dest">
      <fileset dir="hoge" includes="**/*.txt" />
      <mapper type="regexp" from="[^/]*/src/(.*)" to="src/\1" />
    </copy>
  </target>

antわからぬ……(´・ω・`)