2012-05-09 20 views
1

のは、私はこのようなディレクトリ構造を持っているとしましょう:アリ:同じ名前のサブディレクトリの名前を変更し

  • 動物/犬/詳細
  • 動物/猫/詳細
  • 動物/カエル/詳細
  • 動物/馬/詳細

アリ使用して、私はdetails呼ばanimalsの下にあるすべてのサブディレクトリの名前を変更したいです今度はnewと命名されました。

  • 動物/犬/私は「動物/猫/新
  • 動物/カエル/新
  • 動物/馬/新

  • 新しい:だから、結果はこのことでしょうこのようなものを試しました:

    <move tofile="new"> 
         <path id="directories.to.rename"> 
          <dirset dir="animals"> 
           <include name="**/details"/> 
          </dirset> 
         </path> 
        </move> 
    

    ただし、このエラーは

    Cannot concatenate multiple files into a single file. 
    
    +0

    可能な複製http://stackoverflow.com/questions/1041213/how-to-rename-a-folder-using-ant –

    +2

    私はそれが複数のサブ - ディレクトリ。 – digiarnie

    答えて

    1

    使用Ant-Contribforタスクとタスクpropertyregex

    <target name="test"> 
        <for param="detailsDir"> 
        <dirset dir="animals"> 
         <include name="**/details"/> 
        </dirset> 
        <sequential> 
         <propertyregex property="output.dir" input="@{detailsDir}" regexp="(.*)/details" replace="\1" /> 
         <move file="@{detailsDir}" toFile="${output.dir}/new" /> 
        </sequential> 
        </for> 
    </target> 
    
    +0

    私はant-contribのバージョンでforeach(forの代わりに)を使用していましたが、そこにあったものの中核的なアイデアはうまくいきました。ありがとう! – digiarnie

    3

    mapperを使用して名前を変更することができます。たとえば:

    <move todir="animals"> 
        <dirset dir="animals" includes="**/details" /> 
        <globmapper from="*/details" to="*/new"/> 
    </move> 
    

    move task docsの終わりに同様の例があります。)

    あなたが移動タスクの単一ファイルモードを混ぜてきたので、あなたが生まれた見たエラー(TOFILE )複数のファイルモード。 dirsetなどのファイルベースのリソースコレクションを受け入れるmoveタスクであるため、dirsetpathにネストする必要はありません。

    関連する問題