## Concat

### Description

Concatenates a file, or a series of files, to a single file or the console. The destination file will be created if it does not exist.

Paths and/or FileSets and/or FileLists are used to select which files are to be concatenated. There is no singular 'file' attribute to specify a single file to cat.

### Parameters

Attribute | Description | Required
destfile | The destination file for the concatenated stream. If not specified the console will be used instead. | No
append | Specifies whether or not the file specified by 'destfile' should be appended. Defaults to "no". | No
force | Specifies whether or not the file specified by 'destfile' should be written to even if it is newer than all source files. since Ant 1.6. Defaults to "yes". | No
encoding | Specifies the encoding for the input files. Please see http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html for a list of possible values. Defaults to the platform's default character encoding. | No

### Parameters specified as nested elements

#### path

since Ant 1.6.

This is a Path. This is used to select file files to be concatenated. Note that if a file can only appear once in a path. If this is an issue consider using multiple paths.

#### fileset

FileSets are used to select files to be concatenated. Note that the order in which the files selected from a fileset are concatenated is not guaranteed. If this is an issue, use multiple filesets or consider using filelists.

#### filelist

FileLists are used to select files to be concatenated. The file ordering in the files attribute will be the same order in which the files are concatenated.

#### filterchain

since Ant 1.6.

The concat task supports nested FilterChains.

#### header,footer

since Ant 1.6.

Used to prepend or postpend text into the concatenated stream.

The text may be in-line or be in a file.

Attribute | Description | Required
filtering | Whether to filter the text provided by this sub element, default is "yes". | No
file | A file to place at the head or tail of the concatenated text. | No
trim | Whether to trim the value, default is "no" | No
trimleading | Whether to trim leading white space on each line, default is "no" | No

### Examples

Concatenate a string to a file:

      <concat destfile="README">Hello, World!</concat>

Concatenate a series of files to the console:

      <concat>
        <fileset dir="messages" includes="*important*"/>
      </concat>

Concatenate a single file, appending if the destination file exists:

      <concat destfile="NOTES" append="true">
        <filelist dir="notes" files="note.txt"/>
      </concat>

Concatenate a series of files, update the destination file only if is older that all the source files:

      <concat destfile="${docbook.dir}/all-sections.xml"
              force="no">
        <filelist dir="${docbook.dir}/sections"
             files="introduction.xml,overview.xml"/>
        <fileset dir="${docbook.dir}"
             includes="sections/*.xml"
             excludes="introduction.xml,overview.xml"/>
      </concat>

Concatenate a series of files, expanding ant properties

       <concat destfile="${build.dir}/subs">
          <path>
            <fileset dir="${src.dir}" includes="*.xml"/>
            <pathelement location="build.xml"/>
          </path>
          <filterchain>
            <expandproperties/>
          </filterchain>
       </concat>

Filter the lines containing project from build.xml and output them to report.output, prepending with a header

       <concat destfile="${build.dir}/report.output">
          <header filtering="no" trimleading="yes">
              Lines that contain project
              ==========================
          </header>
          <path path="build.xml"/>
          <filterchain>
             <linecontains>
               <contains value="project"/>
             </linecontains>
          </filterchain>
       </concat>

Copyright © 2002-2003 Apache Software Foundation. All Rights Reserved.