Как я могу удалить файлы в каталоге, которые копируются из другого каталога? - PullRequest
5 голосов
/ 26 апреля 2011

У меня есть два каталога, скажем, A и B. A имеет несколько файлов: a1, a2, a3.У B также есть несколько файлов: b1, b2.Сначала я использую следующие задачи ant для копирования всех файлов из B в A.

<copy todir="A" verbose="true">
    <fileset dir="B" includes="*"/>
</copy>

Затем я хочу отменить шаги, то есть удалить файлы в A, которые скопированы из B, а именно, b1 иБи 2.Как мне достичь поставленных целей?

ПРИМЕЧАНИЕ. Имена файлов в примере используются для того, чтобы мы поняли проблему.Я не знаю точных имен файлов в двух каталогах.

Ответы [ 2 ]

7 голосов
/ 26 апреля 2011

Вы должны использовать селектор, чтобы заполнить набор файлов тех файлов, которые вы хотите удалить. Попробуйте Present Selector . Вот цель, чтобы дополнить ваш пример:

<target name="copy" >
<copy todir="A" verbose="true">
    <fileset dir="B" includes="*"/>
</copy>
</target>

<target name="uncopy" >
<delete verbose="true">
    <fileset dir="A" >
        <present present="both" targetdir="B"/>
    </fileset>
</delete>
</target>
0 голосов
/ 26 апреля 2011

Хотя я никогда раньше не использовал ant, предположительно, файлы, скопированные из A, будут иметь текущую метку времени. Если вы удалите все файлы из B с этой отметкой времени, вы должны получить только файлы A, просто следите за проблемой, которая есть в Linux. А именно, несколько временных меток для разных вещей, и если вы копируете, вы меняете одну, но не другую.

Если это не сработает, возможно, вы можете установить владельца файлов в A как специального владельца, прежде чем копировать их. Затем удалите все файлы этого владельца из B. Какое бы решение вы не использовали, оно будет зависеть от того факта, что какой-то фрагмент данных отличает ваши A-файлы от ваших B-файлов, будь то имя, владелец или метка времени. Если нет последовательных различий, вам нужно сделать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...