[英]Apache ant character selector in filename copy task
对于这样的文件集:
XXX_staging
A_filename\A_filename.txt
B_filenAme\B_filenAme.txt
XXX_AL_staging
以下ant目标将仅将名称以大写“ A”开头的文件从XXX_staging文件夹复制到XXX_AL_staging文件夹:
<target name="split_topics">
<copy todir="XXX_AL_staging\" verbose="true" overwrite="true">
<fileset dir=".\XXX_staging" includes="**/A*.txt">
</fileset>
</copy>
</target>
我想做的是仅复制名称以A到L开头的文件。这不起作用:
<target name="split_topics">
<copy todir="XXX_AL_staging\" verbose="true" overwrite="true">
<fileset dir=".\XXX_staging" includes="**/[A-L]*.txt">
</fileset>
</copy>
</target>
我想知道问题是否在于第二个不仅仅是像第一个一样的通配符匹配,而是正则表达式匹配,这不适用于文件名吗? 我不想匹配文件的内容,仅匹配文件名,所以containsregexp似乎已经淘汰了。
我该怎么做呢?
文件名选择器可以使用正则表达式。
├── build.xml
├── src
│ └── somedir
│ ├── A_filename.txt
│ ├── B_filename.txt
│ ├── C_filename.txt
│ ├── D_filename.txt
│ ├── E_filename.txt
│ ├── F_filename.txt
│ └── G_filename.txt
└── target
└── somedir
├── A_filename.txt
├── B_filename.txt
├── C_filename.txt
└── D_filename.txt
<project name="demo" default="copy">
<property name="src.dir" location="src"/>
<property name="build.dir" location="target"/>
<target name="copy">
<copy todir="${build.dir}" overwrite="true" verbose="true">
<fileset dir="${src.dir}">
<filename regex="\/[A-D].*.txt$"/>
</fileset>
</copy>
</target>
</project>
不幸的是, 蚂蚁模式不是正则表达式,甚至不是。 它们是语法非常有限的通配符。 对于复杂的解决方案,您可以使用在Javascript中定义自己的任务并编写一些内容的功能,但这不能让您创建替代的文件集模式匹配语法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.