4

我在一个目录中有三个文件和三个目录,日期不同。

$ cd mydir
$ ls -ltr
-rw-rw-r-- 1 skiphoppy users    0 Nov 14 00:00 file.old.20121114
drwxrwxrwx 2 skiphoppy users 4096 Nov 14 00:00 dir.old.20121114
drwxrwxrwx 2 skiphoppy users 4096 Dec  5 12:05 dir.old.20121205
drwxrwxrwx 2 skiphoppy users 4096 Dec  5 12:05 dir
-rw-rw-r-- 1 skiphoppy users    0 Dec  5 12:16 file.old.20121205
-rw-rw-r-- 1 skiphoppy users    0 Dec  5 12:16 file

我想构建一个包含所有早于 2012-12-01 的目录的目录集。如果我没看错,选择器可用于限制返回的文件。但似乎这不适用于 dirset,即使 dirset 文档说您可以使用嵌套模式集和选择器。

如果我在文件集上使用日期选择器,我只会得到一个我期望的旧文件;但是在目录集上使用相同的语法,我得到了所有目录:

<fileset id="old.files" dir="mydir">
  <date datetime="12/01/2012 12:00 AM" when="before"/>
</fileset>
<echo message="Files: ${toString:old.files}"/>
<dirset id="old.dirs" dir="mydir">
  <date datetime="12/01/2012 12:00 AM" when="before"/>
</dirset>
<echo message="Dirs: ${toString:old.dirs}"/>

输出:

 [echo] Files: file.old.20121114
 [echo] Dirs: ;dir;dir.old.20121114;dir.old.20121205

日期选择器不起作用是怎么回事?

4

1 回答 1

5

您可能需要为日期选择器checkdirs设置属性。默认值为'false',即选择所有内容。

<date datetime="12/01/2012 12:00 AM" when="before" checkdirs="true" />
于 2012-12-05T18:35:25.000 回答