<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://unkrig.de/w/index.php?action=history&amp;feed=atom&amp;title=Zz.unkrig.de</id>
	<title>Zz.unkrig.de - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://unkrig.de/w/index.php?action=history&amp;feed=atom&amp;title=Zz.unkrig.de"/>
	<link rel="alternate" type="text/html" href="https://unkrig.de/w/index.php?title=Zz.unkrig.de&amp;action=history"/>
	<updated>2026-04-23T17:22:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://unkrig.de/w/index.php?title=Zz.unkrig.de&amp;diff=43&amp;oldid=prev</id>
		<title>Aunkrig at 15:23, 2 May 2024</title>
		<link rel="alternate" type="text/html" href="https://unkrig.de/w/index.php?title=Zz.unkrig.de&amp;diff=43&amp;oldid=prev"/>
		<updated>2024-05-02T15:23:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:23, 2 May 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;meta name=&quot;keywords&quot; content=&quot;java, compressed, archive, zip, zipped, nested&quot;&amp;gt;&amp;lt;/meta&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;meta name=&quot;description&quot; content=&quot;A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files&quot;&amp;gt;&amp;lt;/meta&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files. They can even disassemble Java &amp;lt;code&amp;gt;.class&amp;lt;/code&amp;gt; files on-the fly and operate on the disassembly.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files. They can even disassemble Java &amp;lt;code&amp;gt;.class&amp;lt;/code&amp;gt; files on-the fly and operate on the disassembly.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Aunkrig</name></author>
	</entry>
	<entry>
		<id>https://unkrig.de/w/index.php?title=Zz.unkrig.de&amp;diff=10&amp;oldid=prev</id>
		<title>Aunkrig: Created page with &quot;&lt;meta name=&quot;keywords&quot; content=&quot;java, compressed, archive, zip, zipped, nested&quot;&gt;&lt;/meta&gt; &lt;meta name=&quot;description&quot; content=&quot;A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files&quot;&gt;&lt;/meta&gt; A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files. They can even disassemble Java &lt;code&gt;.class&lt;/code&gt; files on-th...&quot;</title>
		<link rel="alternate" type="text/html" href="https://unkrig.de/w/index.php?title=Zz.unkrig.de&amp;diff=10&amp;oldid=prev"/>
		<updated>2024-05-01T18:25:10Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;meta name=&amp;quot;keywords&amp;quot; content=&amp;quot;java, compressed, archive, zip, zipped, nested&amp;quot;&amp;gt;&amp;lt;/meta&amp;gt; &amp;lt;meta name=&amp;quot;description&amp;quot; content=&amp;quot;A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files&amp;quot;&amp;gt;&amp;lt;/meta&amp;gt; A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files. They can even disassemble Java &amp;lt;code&amp;gt;.class&amp;lt;/code&amp;gt; files on-th...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;meta name=&amp;quot;keywords&amp;quot; content=&amp;quot;java, compressed, archive, zip, zipped, nested&amp;quot;&amp;gt;&amp;lt;/meta&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;quot;description&amp;quot; content=&amp;quot;A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files&amp;quot;&amp;gt;&amp;lt;/meta&amp;gt;&lt;br /&gt;
A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files. They can even disassemble Java &amp;lt;code&amp;gt;.class&amp;lt;/code&amp;gt; files on-the fly and operate on the disassembly.&lt;br /&gt;
&lt;br /&gt;
== Tool Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== zzdiff ===&lt;br /&gt;
&lt;br /&gt;
Computes the differences between files, directory trees, archive file entries, compressed files and prints them in various formats; widely compatible with the UNIX&amp;amp;trade; DIFF command line utility.&lt;br /&gt;
&lt;br /&gt;
Read the [http://zz.unkrig.de/maindoc/zz-diff/Main.main(String%5b%5d).html command line tool documentation].&lt;br /&gt;
&lt;br /&gt;
Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzdiff.html ANT task documentation].&lt;br /&gt;
&lt;br /&gt;
=== zzfind ===&lt;br /&gt;
&lt;br /&gt;
Finds files in directory trees and entries in archive files by various criteria; widely compatible with the UNIX&amp;amp;trade; FIND command line utility.&lt;br /&gt;
&lt;br /&gt;
Read the [http://zz.unkrig.de/maindoc/zz-find/Main.main(String%5b%5d).html command line tool documentation] (or the [http://zz.unkrig.de/maindoc/zz-find/Main.main(String%5b%5d).txt plain text version]).&lt;br /&gt;
&lt;br /&gt;
Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzfind.html ANT task documentation].&lt;br /&gt;
&lt;br /&gt;
=== zzgrep ===&lt;br /&gt;
&lt;br /&gt;
Finds lines in files in directory trees and in entries in archive files by regular expressions; widely compatible with the UNIX&amp;amp;trade; GREP command line utility.&lt;br /&gt;
&lt;br /&gt;
Read the [http://zz.unkrig.de/maindoc/zz-grep/Main.main(String%5b%5d).html command line tool documentation].&lt;br /&gt;
&lt;br /&gt;
Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzgrep.html ANT task documentation].&lt;br /&gt;
&lt;br /&gt;
=== zzpack ===&lt;br /&gt;
&lt;br /&gt;
Creates an archive file from a set of given files, directories, and archive entries.&lt;br /&gt;
&lt;br /&gt;
Read the [http://zz.unkrig.de/maindoc/zz-pack/Main.main(String%5b%5d).html command line tool documentation].&lt;br /&gt;
&lt;br /&gt;
Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzpack.html ANT task documentation].&lt;br /&gt;
&lt;br /&gt;
=== zzpatch ===&lt;br /&gt;
&lt;br /&gt;
Modifies the contents of files in directory trees and of entries in archive files by various criteria; widely compatible with the UNIX&amp;amp;trade; PATCH command line utility.&lt;br /&gt;
&lt;br /&gt;
Read the [http://zz.unkrig.de/maindoc/zz-patch/Main.main(String%5b%5d).html command line tool documentation].&lt;br /&gt;
&lt;br /&gt;
Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzpatch.html ANT task documentation].&lt;br /&gt;
&lt;br /&gt;
== Download and Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Runnable JAR files ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;form method=&amp;quot;get&amp;quot; action=&amp;quot;https://repository.sonatype.org/service/local/artifact/maven/redirect&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;r&amp;quot; value=&amp;quot;central-proxy&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;g&amp;quot; value=&amp;quot;de.unkrig.zz&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;v&amp;quot; value=&amp;quot;LATEST&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;c&amp;quot; value=&amp;quot;jar-with-dependencies&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Latest version of&lt;br /&gt;
    &amp;lt;select name=&amp;quot;a&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-diff&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-find&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-grep&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-pack&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-patch&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;/select&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;DOWNLOAD&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS WINDOWS executables ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;form method=&amp;quot;get&amp;quot; action=&amp;quot;https://repository.sonatype.org/service/local/artifact/maven/redirect&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;r&amp;quot; value=&amp;quot;central-proxy&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;g&amp;quot; value=&amp;quot;de.unkrig.zz&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;v&amp;quot; value=&amp;quot;LATEST&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;p&amp;quot; value=&amp;quot;exe&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Latest version of&lt;br /&gt;
    &amp;lt;select name=&amp;quot;a&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-diff&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-find&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-grep&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-pack&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-patch&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;/select&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;DOWNLOAD&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice: These executables require an installed JRE; at least version 1.6. They will complain if they cannot find a suitable JRE, and give advice how to get things running.&lt;br /&gt;
&lt;br /&gt;
=== APACHE ANT libraries ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;form method=&amp;quot;get&amp;quot; action=&amp;quot;https://repository.sonatype.org/service/local/artifact/maven/redirect&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;r&amp;quot; value=&amp;quot;central-proxy&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;g&amp;quot; value=&amp;quot;de.unkrig.zz&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;v&amp;quot; value=&amp;quot;LATEST&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;c&amp;quot; value=&amp;quot;jar-with-dependencies&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Latest version of&lt;br /&gt;
    &amp;lt;select name=&amp;quot;a&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;option value=&amp;quot;zz-all&amp;quot;&amp;gt;All-in-one&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-diff&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-find&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-grep&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-pack&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-patch&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;/select&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;DOWNLOAD&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use the ANT types, insert one of the following lines in your build script:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;taskdef resource=&amp;quot;de/unkrig/zz/zz-diff.xml&amp;quot;  classpath=&amp;quot;path/to/zz-diff-x.y.z-jar-with-dependencies.jar&amp;quot;  /&amp;gt;&lt;br /&gt;
  &amp;lt;taskdef resource=&amp;quot;de/unkrig/zz/zz-find.xml&amp;quot;  classpath=&amp;quot;path/to/zz-find-x.y.z-jar-with-dependencies.jar&amp;quot;  /&amp;gt;&lt;br /&gt;
  &amp;lt;taskdef resource=&amp;quot;de/unkrig/zz/zz-grep.xml&amp;quot;  classpath=&amp;quot;path/to/zz-grep-x.y.z-jar-with-dependencies.jar&amp;quot;  /&amp;gt;&lt;br /&gt;
  &amp;lt;taskdef resource=&amp;quot;de/unkrig/zz/zz-pack.xml&amp;quot;  classpath=&amp;quot;path/to/zz-pack-x.y.z-jar-with-dependencies.jar&amp;quot;  /&amp;gt;&lt;br /&gt;
  &amp;lt;taskdef resource=&amp;quot;de/unkrig/zz/zz-patch.xml&amp;quot; classpath=&amp;quot;path/to/zz-patch-x.y.z-jar-with-dependencies.jar&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use more than one of the tools in your build script, it is more efficient to use the &amp;quot;all-in-one&amp;quot; JAR file:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;taskdef resource=&amp;quot;de/unkrig/zz/zz-all.xml&amp;quot; classpath=&amp;quot;path/to/zz-all-x.y.z-jar-with-dependencies.jar&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Java Library ===&lt;br /&gt;
&lt;br /&gt;
The ZZ tools also have a public Java API that can be used from by any Java application. You can either download and use this JAR file, or, if you&amp;#039;re using MAVEN, put in your &amp;quot;pom.xml&amp;quot; file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;dependency&amp;gt;&lt;br /&gt;
     &amp;lt;groupId&amp;gt;de.unkrig.zz&amp;lt;/groupId&amp;gt;&lt;br /&gt;
     &amp;lt;artifactId&amp;gt;zz-diff&amp;lt;/artifactId&amp;gt; &amp;lt;!-- Or zz-find, zz-grep, zz-pack, zz-patch. --&amp;gt;&lt;br /&gt;
     &amp;lt;version&amp;gt;x.y.z&amp;lt;/version&amp;gt;&lt;br /&gt;
 &amp;lt;/dependency&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the API documentation:&lt;br /&gt;
&lt;br /&gt;
* [http://zz.unkrig.de/javadoc/zz-diff/ zz-diff API documentation]&lt;br /&gt;
* [http://zz.unkrig.de/javadoc/zz-find/ zz-find API documentation]&lt;br /&gt;
* [http://zz.unkrig.de/javadoc/zz-grep/ zz-grep API documentation]&lt;br /&gt;
* [http://zz.unkrig.de/javadoc/zz-pack/ zz-pack API documentation]&lt;br /&gt;
* [http://zz.unkrig.de/javadoc/zz-patch/ zz-patch API documentation]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;form method=&amp;quot;get&amp;quot; action=&amp;quot;https://repository.sonatype.org/service/local/artifact/maven/redirect&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;r&amp;quot; value=&amp;quot;central-proxy&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;g&amp;quot; value=&amp;quot;de.unkrig.zz&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;v&amp;quot; value=&amp;quot;LATEST&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;c&amp;quot; value=&amp;quot;sources&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Source code is available on &amp;lt;a href=&amp;quot;https://github.com/aunkrig/zz&amp;quot;&amp;gt;GITHUB&amp;lt;/a&amp;gt;,&lt;br /&gt;
    and also through MAVEN:&lt;br /&gt;
    &amp;lt;select name=&amp;quot;a&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-diff&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-find&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-grep&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-pack&amp;lt;/option&amp;gt;&lt;br /&gt;
      &amp;lt;option&amp;gt;zz-patch&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;/select&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;DOWNLOAD&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ZZ tools make heavy use of [http://commons.unkrig.de/ commons.unkrig.de].&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
&lt;br /&gt;
ZZ.UNKRIG.DE is published under the &amp;quot;[[New BSD License]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Change Log ==&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.3.11-SNAPSHOT (not yet released):&lt;br /&gt;
:* -&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.3.10, 2022-12-29:&lt;br /&gt;
:* Changed handling of &amp;quot;-&amp;quot; to ResourceProcessings.STDIN_URL.&lt;br /&gt;
:* ZZDIFF can now handle &amp;quot;-&amp;quot; (stdin) as one of its two inputs.&lt;br /&gt;
:* ZZPATCH: --substitute: Removed the concept of the &amp;quot;replacement mode&amp;quot;, because the extended replacement syntax just implements the &amp;quot;literal&amp;quot; and &amp;quot;expression&amp;quot; replacement modes.&lt;br /&gt;
:* ZZPACK: Added the &amp;quot;--rename&amp;quot; feature.&lt;br /&gt;
:* ZZPATCH: Substitution: Replacement mode &amp;quot;REPLACEMENT_STRING&amp;quot; now supports &amp;quot;ext syntax&amp;quot;, i.e. &amp;quot;${...}&amp;quot; embedded expressions.&lt;br /&gt;
:* ZZPATCH: ExitException message is now &amp;quot;Printers.info()&amp;quot;ed instead of &amp;quot;Printers.verbose()&amp;quot;ed.&lt;br /&gt;
:* ZZFIND: Greatly simplified the computation of the expression variables.&lt;br /&gt;
:* ZZFIND: Fixed an exception when finding in STDIN: STDIN does not have the properties &amp;quot;readable&amp;quot;, &amp;quot;writable&amp;quot; and &amp;quot;executable&amp;quot;.&lt;br /&gt;
:* ZZFIND: Class file version can now be accessed by &amp;quot;cf.javaVersion&amp;quot;.&lt;br /&gt;
:* ZZFIND: MAINDOC: Documented the &amp;quot;archiveEntry&amp;quot; variable.&lt;br /&gt;
:* ZZGREP: Moved &amp;quot;Grep.lineCounter()&amp;quot; to &amp;quot;ConsumerUtil&amp;quot;.&lt;br /&gt;
:* ZZGREP: Eliminated the 65536-characters-per-line limit -- finds and counts matches now also in very long lines.&lt;br /&gt;
:* ZZPATCH: Added the &amp;quot;--assert-count&amp;quot; condition for updates/substitution replacements/patch hunks/removals/renamings/additions.&lt;br /&gt;
:* ZZFIND: Learned that the various ZIP archive libraries return random values for &amp;quot;ZipEntry.getMethod()&amp;quot; and &amp;quot;ZipEntry.getCrc()&amp;quot;, thus made the test cases tolerant against these.&lt;br /&gt;
:* ZZFIND: Don&amp;#039;t print a stack trace on predicate parse errors; only print the error message.&lt;br /&gt;
:* ZZPATCH: Added command line options for archive decryption: --7z-input-file-password --zip-input-file-password --password&lt;br /&gt;
:* ZZPATCH: Added command line options for archive compression and encryption: --zip-output-entry-compression-level --zip-output-file-password --zip-output-file-encryption-method&lt;br /&gt;
:* ZZFIND: Added short command line option for archive decryption: --password&lt;br /&gt;
:* ZZFIND: Added the &amp;quot;-version&amp;quot; command line option.&lt;br /&gt;
:* ZZGREP: Added command line options &amp;quot;--input-encoding&amp;quot; and &amp;quot;--output-encoding&amp;quot;. (Previously, the output encoding was not configurable.)&lt;br /&gt;
:* ZZGREP: Fixed the printing of &amp;quot;--&amp;quot; separator lines between context-grep chunks.&lt;br /&gt;
:* ZZFIND: MAINDOC: Documented priority of operators.&lt;br /&gt;
:* ZZFIND: CatAction: Entries that have no input stream (e.g. directories or directory archive entries) are silently ignored, because that is practical: Otherwise, you&amp;#039;d always have to put &amp;quot;-type normal*&amp;quot; right before the &amp;quot;-cat&amp;quot; action.&lt;br /&gt;
:* ZZFIND: -copy action: Now ignore entries that have no input stream (e.g. directories or directory archive entries), because that is practical: Otherwise, you&amp;#039;d always have to put &amp;quot;-type normal*&amp;quot; right before the &amp;quot;-copy&amp;quot; action.&lt;br /&gt;
:* ZZFIND: -copy action: Attempt to restore each file&amp;#039;s &amp;quot;last modification date&amp;quot;, too.&lt;br /&gt;
:* ZZPATCH: Unified DIFF format: Some DIFF tools (namely GNU diffutils 3.5) put a TAB character (instead of a SPACE) between the file name and the date.&lt;br /&gt;
:* ZZFIND: Added &amp;quot;--toFile&amp;quot; option to &amp;quot;-disassemble&amp;quot;.&lt;br /&gt;
:* ZZFIND: Added new variable &amp;quot;archiveEntry&amp;quot;.&lt;br /&gt;
:* ZZFIND: Added action &amp;quot;-java-class-file&amp;quot;.&lt;br /&gt;
:* ZZFIND: Added expression variable &amp;quot;compressionMethod&amp;quot; (for archive entries).&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.3.9, 2020-11-06:&lt;br /&gt;
:* Updated jdisasm to 1.0.6.&lt;br /&gt;
:* Updated de.unkrig.commons to 1.2.15.&lt;br /&gt;
:* Removed the generation of the &amp;quot;...-antlib.jar&amp;quot; file, because &amp;quot;...-jar-with-dependencies.jar&amp;quot; can be used as an ANTLIB as well.&lt;br /&gt;
:* Fixed the file type in the output of -ls.&lt;br /&gt;
:* Added expression variables &amp;quot;readable&amp;quot;, &amp;quot;writable&amp;quot; and &amp;quot;executable&amp;quot;.&lt;br /&gt;
:* Adapted to an incompatible API change in &amp;quot;commons-file&amp;quot; (all content processing was augmented with an optional &amp;quot;lastModifiedDate&amp;quot; parameter).&lt;br /&gt;
:* Fixed an NPE that occurred with 7Z archive entries that have NO modification date set.&lt;br /&gt;
:* ZZFIND now compiles with JDK 1.8 (before it was 1.6).&lt;br /&gt;
:* Major refactoring: Replaced &amp;quot;Mappings properties&amp;quot; with &amp;quot;Map&amp;lt;String, Function&amp;lt;Object, Object&amp;gt;&amp;gt; properties.&lt;br /&gt;
:* Implemented the new expression variables &amp;quot;_map&amp;quot;, &amp;quot;_keys&amp;quot; and &amp;quot;_values&amp;quot;.&lt;br /&gt;
:* Context diff: The &amp;quot;hunk separator line&amp;quot; (&amp;quot;--&amp;quot;) was missing.&lt;br /&gt;
:* Actions that read the contents of a document (-cat, -copy, -disassemble, -digest, -checksum) didn&amp;#039;t for &amp;quot;normal-file&amp;quot; documents.&lt;br /&gt;
:* &amp;quot;--nowarn&amp;quot;, &amp;quot;--quiet&amp;quot;, &amp;quot;--verbose&amp;quot; and &amp;quot;--debug&amp;quot; now not only configure the &amp;quot;Printers&amp;quot;, but also &amp;quot;SimpleLogging&amp;quot;.&lt;br /&gt;
:* Added the &amp;quot;--replacementMode&amp;quot; option which allows for more complex replacements than the java.util.regex.Matcher can offer&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.3.8, 2019-10-09:&lt;br /&gt;
:* zzgrep: Implemented &amp;quot;-e&amp;quot;.&lt;br /&gt;
:* zzgrep: Implemented &amp;quot;--byte-offset&amp;quot;, &amp;quot;--with-path&amp;quot;, &amp;quot;--no-path&amp;quot;, &amp;quot;--label&amp;quot;, &amp;quot;--line-number&amp;quot;, &amp;quot;--after-context&amp;quot;, &amp;quot;--before-context&amp;quot; and &amp;quot;--context&amp;quot;.&lt;br /&gt;
:* &amp;lt;zzpatch&amp;gt; Ant task: &amp;quot;&amp;lt;substitution&amp;gt;&amp;lt;regex&amp;gt;...&amp;quot; and &amp;quot;...&amp;lt;replacement&amp;gt;...&amp;quot;: Property &amp;quot;replacement&amp;quot; was missing for &amp;quot;addText()&amp;quot;.&lt;br /&gt;
:* Major refactoring of &amp;quot;zz.Find&amp;quot; - removed tons of copied code.&lt;br /&gt;
:* zzfind: Improved handling of corrupt archives and compressed contents.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.3.7, 2019-08-05:&lt;br /&gt;
:* In addition to &amp;quot;...-jar-with-dependencies.jar&amp;quot;, generate a &amp;quot;...-antlib.jar&amp;quot; file, where the ANT classes are NOT included.&lt;br /&gt;
:* The &amp;quot;-copy&amp;quot; action now supports a &amp;quot;--append&amp;quot; (alias &amp;quot;-a&amp;quot;) modifier.&lt;br /&gt;
:* Now using &amp;quot;ExpressionEvaluator.parseExt()&amp;quot;.&lt;br /&gt;
:* Added &amp;quot;--printf&amp;quot; command line action.&lt;br /&gt;
:* Fixed the &amp;quot;line equivalence&amp;quot; and the &amp;quot;ignore&amp;quot; feature; both were accidentially broken with revision 6980 (affects only release 1.3.5).&lt;br /&gt;
:* The &amp;quot;zz-diff&amp;quot; command line tool now also accepts URLs on its command line.&lt;br /&gt;
:* &amp;quot;--verbose&amp;quot; had no effect; now it prints the names of files and archive entries that are searched.&lt;br /&gt;
&lt;br /&gt;
; Changes in Version 1.3.6, 2018-07-24:&lt;br /&gt;
:* Added a test case for &amp;quot;zzpatch --substitute --iff&amp;quot;.&lt;br /&gt;
:* Substitution conditions now support a new variable, &amp;quot;occurrence&amp;quot;.&lt;br /&gt;
:* Added a &amp;quot;&amp;lt;condition&amp;gt;&amp;quot; subelement on the &amp;quot;&amp;lt;substitution&amp;gt;&amp;quot; element. This is useful, e.g., to replace only the FIRST match.&lt;br /&gt;
:* For conformance with GREP, exit with status 2 (not 1) on errors.&lt;br /&gt;
:* &amp;lt;zzfind&amp;gt;: Added the &amp;quot;&amp;lt;prune /&amp;gt;&amp;quot; and &amp;quot;&amp;lt;delete /&amp;gt;&amp;quot; subelements.&lt;br /&gt;
:* zzfind: Renamed option &amp;quot;--depth&amp;quot; to &amp;quot;--descendants-first&amp;quot; (and left the original as an alias).&lt;br /&gt;
:* &amp;lt;zzfind&amp;gt;: Renamed the depth=&amp;quot;...&amp;quot; attribute to descendantsFirst=&amp;quot;...&amp;quot;.&lt;br /&gt;
:* Added the &amp;quot;-prune&amp;quot; and &amp;quot;-delete&amp;quot; actions.&lt;br /&gt;
:* Added &amp;quot;&amp;amp;&amp;amp;&amp;quot; and &amp;quot;-and&amp;quot; as aliases for &amp;quot;-a&amp;quot;.&lt;br /&gt;
:* Added &amp;quot;||&amp;quot; and &amp;quot;-or&amp;quot; as aliases for &amp;quot;-o&amp;quot;.&lt;br /&gt;
:* Added options &amp;quot;da-verbose&amp;quot;, &amp;quot;da-source-directory&amp;quot; and &amp;quot;da-symbolic-labels&amp;quot;.&lt;br /&gt;
:* Continue with next archive entry on IOException.&lt;br /&gt;
:* ZZGREP: When run with a list file-or-dirs, only every second file-or-dir was searched.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.3.4, 2017-02-03:&lt;br /&gt;
:* Added a workaround for: MS WINDOWS 7: Read-protected directory produces: isDirectory() =&amp;gt; true canRead()     =&amp;gt; true list()        =&amp;gt; null listFiles()   =&amp;gt; null (Caused NPEs.)&lt;br /&gt;
:* ZZDIFF: Bug fixed: Document DIFF was always UNIFIED, regardless of the document diff mode setting.&lt;br /&gt;
:* Change version of de.unkrig.commons from &amp;quot;1.2.6-SNAPSHOT&amp;quot; to &amp;quot;1.2.7-SNAPSHOT&amp;quot; (because THAT is the correct post-1.2.6 version).&lt;br /&gt;
:* Renamed &amp;quot;namePredicate&amp;quot; to &amp;quot;pathPredicate&amp;quot;.&lt;br /&gt;
:* Replaced the &amp;quot;name=...&amp;quot; attribute with &amp;quot;path=...&amp;quot;, and marked the old attribute as @deprecated.&lt;br /&gt;
:* The &amp;quot;pathPredicate&amp;quot; was missing from content processors.&lt;br /&gt;
:* Generate ANTDOC only for the &amp;quot;zz-all&amp;quot; module, not for &amp;quot;zz-(diff|find|grep|pack|patch)&amp;quot; individually. Saves on build time, and reduces redundant documentation.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.3.3, 2016-11-28:&lt;br /&gt;
:* Removed unnecessary dependency on &amp;quot;jdisasm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:* Fixed the classpath for zz-all antdoc.&lt;br /&gt;
:* Added the &amp;quot;--no-recurse-subdirctories&amp;quot; command line option.&lt;br /&gt;
:* Extracted the &amp;quot;DOcumentDiff&amp;quot; class from the &amp;quot;Diff&amp;quot; class.&lt;br /&gt;
:* Added task attribute &amp;quot;recurseSubdirectories=false&amp;quot;.&lt;br /&gt;
:* Added the &amp;quot;Diff.diff(path1, path2, stream1, stream2)&amp;quot; method.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.3.2, 2016-11-25:&lt;br /&gt;
:* Added test cases for ZZDIFF.&lt;br /&gt;
:* Added &amp;quot;Diff.execute(String path1, String path2, ...)&amp;quot; to allow for custom &amp;quot;path1&amp;quot; and &amp;quot;path2&amp;quot; strings when reporting differences.&lt;br /&gt;
:* Improved many &amp;quot;DiffException&amp;quot;s&amp;#039; messages.&lt;br /&gt;
:* Slightly clarified the wording of the license: Replaced &amp;quot;author&amp;quot; with &amp;quot;copyright holder and its contributors&amp;quot;.&lt;br /&gt;
:* Include project name and version in APIDOC&amp;#039;s &amp;quot;-header&amp;quot; and &amp;quot;-footer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.3.1, 2016-11-07:&lt;br /&gt;
:* The JVM (sometimes) did not terminate when it is shut down orderly (i.e. &amp;quot;main()&amp;quot; returns or &amp;quot;System.exit()&amp;quot; is invoked).&lt;br /&gt;
:* Added the &amp;quot;launch4j&amp;quot; maven plugin that creates MS WINDOWS executables from the runnable JAR files.&lt;br /&gt;
:* Made the scope of the &amp;quot;ant&amp;quot; dependency &amp;quot;provided&amp;quot;, so that the classes of &amp;quot;ant.jar&amp;quot; don&amp;#039;t get into the &amp;quot;jar-with-dependencies&amp;quot;.&lt;br /&gt;
:* Added JAVADOC &amp;quot;overview.html&amp;quot; files for the five zz tools.&lt;br /&gt;
:* ZZFIND: Made many methods and nested types PUBLIC, so they can be used via the Java API.&lt;br /&gt;
:* Moved ANTDOC generation from &amp;quot;zz-parent/build.ant&amp;quot; to &amp;quot;zz-parent/pom.xml&amp;quot;.&lt;br /&gt;
:* Added &amp;quot;zz-all&amp;quot;, which is an aggregation of the five ZZ tools.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.3.0, 2016-10-30:&lt;br /&gt;
:* ZZFIND, &amp;lt;zzfind&amp;gt;: Line separator was missing from the &amp;quot;LS&amp;quot; action.&lt;br /&gt;
:* ZZFIND, &amp;lt;zzfind&amp;gt;: Added the &amp;quot;-digest&amp;quot; and &amp;quot;-checksum&amp;quot; actions.&lt;br /&gt;
:* ZZFIND: Allow combinations of file names and &amp;quot;-&amp;quot; (STDIN).&lt;br /&gt;
:* &amp;lt;zzfind&amp;gt;: Added &amp;quot;&amp;lt;true/&amp;gt;&amp;quot; and &amp;quot;&amp;lt;false/&amp;gt;&amp;quot;.&lt;br /&gt;
:* ZZFIND: Added &amp;quot;-true&amp;quot; and &amp;quot;-false&amp;quot;.&lt;br /&gt;
:* &amp;lt;zzfind&amp;gt;: The expression subelements are now named ANT components.&lt;br /&gt;
:* ZZFIND: Variable substitution (in &amp;quot;-echo&amp;quot; and &amp;quot;-copy&amp;quot;) now supports &amp;quot;@variableName&amp;quot; in addition to &amp;quot;@{variable-name}&amp;quot;.&lt;br /&gt;
:* ZZDIFF, &amp;lt;zzdiff&amp;gt;: Added options &amp;quot;addedFile&amp;quot; and &amp;quot;deletedFile&amp;quot; which supersede &amp;quot;newFile&amp;quot; and &amp;quot;unidirectionalNewFile&amp;quot;.&lt;br /&gt;
:* &amp;lt;zzpatch&amp;gt;: File/entry renaming did not work (flag Glob.REPLACEMENT was missing).&lt;br /&gt;
:* &amp;lt;zzfind&amp;gt;: Renamed the &amp;quot;&amp;lt;path&amp;gt;&amp;quot; expression component to &amp;quot;&amp;lt;path_&amp;gt;&amp;quot; to avoid a name clash with the global type with the same name.&lt;br /&gt;
:* Switched from the old ANT build to MAVEN.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.2.5, 2016-02-12:&lt;br /&gt;
:* ZZFIND, &amp;lt;zzfind&amp;gt;: Added the &amp;quot;depth&amp;quot; property.&lt;br /&gt;
:* ZZFIND, &amp;lt;zzfind&amp;gt;: Added the &amp;quot;comma operator&amp;quot;, &amp;quot;-mtime&amp;quot;, &amp;quot;-depth&amp;quot;, &amp;quot;-minDepth&amp;quot; and &amp;quot;-maxDepth&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.2.4, 2016-02-10:&lt;br /&gt;
:* &amp;lt;zzpatch&amp;gt;: &amp;quot;condition=...&amp;quot; is now an attribute of the &amp;lt;patch&amp;gt; subelement, not the task.&lt;br /&gt;
:* zzdiff: Added command line option &amp;quot;--normal&amp;quot;.&lt;br /&gt;
:* All pathes: Compressed file names and compressed contents paths are now suffixed with &amp;#039;%&amp;#039; (instead of &amp;#039;!&amp;#039;) to circumvent problems with &amp;quot;Glob&amp;quot;&amp;#039;s directory prefix mechanism.&lt;br /&gt;
:* ZZFIND on STDIN threw exceptions, because &amp;quot;-ls&amp;quot; requires &amp;quot;isDirectory&amp;quot;, &amp;quot;size&amp;quot;, etc.&lt;br /&gt;
:* ZZFIND: Parsing of special command line argument &amp;quot;-&amp;quot; (for &amp;quot;STDIN&amp;quot;) didn&amp;#039;t work.&lt;br /&gt;
:* ZZGREP: The &amp;quot;-quiet&amp;quot; command line option did not have any effect.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.2.3, 2015-09-27:&lt;br /&gt;
:* ZZFIND command line tool: Option &amp;quot;--look-into&amp;quot;: Glob was compiled WITHOUT the WILDCARD|INCLUDES_EXCLUDES flag.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.2.2, 2015-09-27:&lt;br /&gt;
:* ZZPATCH ant task: Removed attribute &amp;quot;memberName=...&amp;quot; from subelement &amp;quot;&amp;lt;add&amp;gt;&amp;quot;, because the ant task does not traverse directories (opposed to the command line version), and thus adding members to directories is not possible.&lt;br /&gt;
:* ZZDIFF: Fixed some NPEs that occurred when files / entries are EXCLUDED.&lt;br /&gt;
:* ZZFIND: Added the &amp;quot;DisassembleAction&amp;quot; (disassembles a Java .class file).&lt;br /&gt;
:* Generate and publish HTML documentation for ANT tasks with ANTDOC.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.2.1, 2015-05-24:&lt;br /&gt;
:* FIND: Command line tool and ANT task now continue with next directory member on IOExceptions.&lt;br /&gt;
:* DIFF: Added the &amp;quot;tokenization&amp;quot; configuration parameter, which allows for Java token-based DIFFing.&lt;br /&gt;
:* DIFF: Added the &amp;quot;ignoreCStyleComments&amp;quot; and &amp;quot;ignoreCPlusPlusStyleComments&amp;quot; configuration option (relevant iff &amp;quot;tokenization&amp;quot; is &amp;quot;JAVA&amp;quot;).&lt;br /&gt;
:* The classes for the &amp;#039;zzpack&amp;#039; ant task were missing from the jar file.&lt;br /&gt;
:* ZZFIND ant task: Added the &amp;quot;file=...&amp;quot; and &amp;quot;dir=...&amp;quot; attributes.&lt;br /&gt;
:* ZZFIND: Added the &amp;quot;&amp;lt;echo message=...&amp;gt;&amp;quot; and &amp;quot;&amp;lt;property name=... value=...&amp;gt;&amp;quot; actions.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.2.0, 2015-04-30:&lt;br /&gt;
:* &amp;quot;ArchiveFormatFactory&amp;quot; and &amp;quot;CompressionFormatFactory&amp;quot; now register &amp;quot;URLStreamHandler&amp;quot;s for all archive and compression formats, so these can be used as &amp;quot;protocols&amp;quot; of &amp;quot;java.net.URL&amp;quot;, e.g. &amp;quot;zip:file:foo.zip!file.txt&amp;quot;.&lt;br /&gt;
:* Major refactoring of &amp;#039;de.unkrig.commons.file.fileprocessing&amp;#039; and &amp;#039;de.unkrig.commons.file.contentsprocessing&amp;#039;. Effectively, ZZGREP can now use these classes, because &amp;#039;process()&amp;#039; now returns &amp;#039;T&amp;#039;. &lt;br /&gt;
:* Renamed the following classes for consistency with &amp;#039;java.util.Collections&amp;#039;, &amp;#039;...Arrays&amp;#039;, etc.:&lt;br /&gt;
:** ContentsProcessingUtil =&amp;gt; ContentsProcessings&lt;br /&gt;
:** ContentsTransformerUtil =&amp;gt; ContentsTransformations&lt;br /&gt;
:** FileProcessingUtil =&amp;gt; FileProcessings&lt;br /&gt;
:** FileTransformationUtil  =&amp;gt; FileTransformations&lt;br /&gt;
:* ANT integration: Added the &amp;#039;&amp;lt;patch&amp;gt;&amp;#039; filter (for use in ANT &amp;#039;filter chain&amp;#039;s).&lt;br /&gt;
:* ANT integration: Added the &amp;#039;condition&amp;#039; property to the &amp;#039;&amp;lt;zzpatch&amp;gt;&amp;#039; task.&lt;br /&gt;
:* ZZDIFF: Added the &amp;quot;-sequential&amp;quot; command line option.&lt;br /&gt;
:* &amp;lt;zzdiff&amp;gt;: Replaced the &amp;#039;lookInto[Nested](Zip|Gzip)=&amp;quot;...&amp;quot;&amp;#039; attributes with the (more flexible) &amp;#039;lookInto=&amp;quot;...&amp;quot;&amp;#039; attribute.&lt;br /&gt;
:* &amp;lt;zzdiff&amp;gt;: Replaced the &amp;quot;&amp;lt;exclude&amp;gt;&amp;quot; subelements with the &amp;quot;path=...&amp;quot; attribute, eliminating the unusual &amp;quot;negative&amp;quot; logic. &lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.1.0, 2014-10-25:&lt;br /&gt;
:* zzpatch: No file arguments mean &amp;#039;transform STDIN to STDOUT&amp;#039;.&lt;br /&gt;
:* zzpatch: Added &amp;#039;conditions&amp;#039; for the &amp;#039;substitute&amp;#039;, &amp;#039;replace&amp;#039;, &amp;#039;patch&amp;#039;, &amp;#039;remove&amp;#039;, &amp;#039;rename&amp;#039; and &amp;#039;add&amp;#039; features.&lt;br /&gt;
:* zzpatch: Added &amp;#039;dontSortDirectoryMembers&amp;#039; feature.&lt;br /&gt;
:* de.unkrig.commons.file: Thanks to apache.commons.compress, we now not only support the ZIP archive format and the GZIP compression algorithm, but also the AR, ARJ, CPIO, DUMP, JAR, TAR and SEVEN_Z archive formats and the BZIP2, PACK200, XZ, LZMA, SNAPPY and Z compression algorithms.&lt;br /&gt;
:* &amp;lt;zzpatch&amp;gt;, &amp;lt;zzgrep&amp;gt;: Removed the &amp;#039;dir=&amp;quot;...&amp;quot;&amp;#039; and &amp;#039;sortDirectoryMembers=&amp;quot;...&amp;quot;&amp;#039; attributes from these ANT tasks because recursing directories is ANT&amp;#039;s job.&lt;br /&gt;
:* &amp;lt;zzpatch&amp;gt;, &amp;lt;zzgrep&amp;gt;: Replaced the &amp;#039;lookInto[Nested](Zip|Gzip)=&amp;quot;...&amp;quot;&amp;#039; attributes with the (more flexible) &amp;#039;lookInto=&amp;quot;...&amp;quot;&amp;#039; attribute.&lt;br /&gt;
:* &amp;lt;zzgrep&amp;gt;: Removed the &amp;quot;dir=...&amp;quot; attribute.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.0.11, 2014-04-12:&lt;br /&gt;
:* ZZDIFF: Added option &amp;#039;-unchanged-files&amp;#039; resp. ANT task attribute &amp;#039;reportUnchangedFiles=&amp;quot;true&amp;quot;&amp;#039;: Also report unchanged files.&lt;br /&gt;
:* ZZDIFF: Added &amp;#039;-zip&amp;#039; and &amp;#039;-nested-zip&amp;#039; command line options - aliases for &amp;#039;-z&amp;#039; and &amp;#039;-zz&amp;#039;.&lt;br /&gt;
:* ZZFIND: Added the &amp;#039;-copy&amp;#039; action - similar to &amp;#039;-cat&amp;#039;, but copies the data bytewise.&lt;br /&gt;
:* &amp;lt;zzfind&amp;gt;: Added a &amp;#039;&amp;lt;sequential&amp;gt;&amp;#039; subelement.&lt;br /&gt;
:* &amp;lt;zzgrep&amp;gt;: Added attributes &amp;#039;file=&amp;quot;...&amp;quot;&amp;#039; and &amp;#039;dir=&amp;quot;...&amp;quot;&amp;#039;&lt;br /&gt;
:* &amp;lt;zzpatch&amp;gt;: Added attributes &amp;#039;file=&amp;quot;...&amp;quot;&amp;#039;, &amp;#039;tofile=&amp;quot;...&amp;quot;&amp;#039;, &amp;#039;dir=&amp;quot;...&amp;quot;&amp;#039; and &amp;#039;todir=&amp;quot;...&amp;quot;&amp;#039;&lt;br /&gt;
:* de.unkrig.commons.util: &amp;lt;simplelogging&amp;gt;: Added attribute &amp;#039;spec=&amp;quot;...&amp;quot;&amp;#039;.&lt;br /&gt;
:* &amp;lt;zzgrep&amp;gt;: Added attribute &amp;#039;property=&amp;quot;...&amp;quot;&amp;#039;.&lt;br /&gt;
:* &amp;lt;zzgrep&amp;gt;: Added subelement &amp;#039;&amp;lt;search name=&amp;quot;...&amp;quot; regex=&amp;quot;...&amp;quot; caseSensitive=&amp;quot;...&amp;quot;/&amp;gt;&amp;#039;&lt;br /&gt;
:* &amp;lt;zzgrep&amp;gt;: Made the &amp;#039;case sensitivity logic&amp;#039; POSITIVE.&lt;br /&gt;
:* &amp;lt;zzgrep&amp;gt;: Removed the &amp;#039;&amp;lt;include&amp;gt;&amp;#039; and &amp;#039;&amp;lt;exclude&amp;gt;&amp;#039; subelements in favor of &amp;#039;name=&amp;quot;...&amp;quot;&amp;#039;.&lt;br /&gt;
:* &amp;lt;zzgrep&amp;gt;: &amp;#039;name=&amp;quot;...&amp;quot;&amp;#039;, &amp;#039;regex=&amp;quot;...&amp;quot;&amp;#039; and &amp;#039;caseSensitive=&amp;quot;...&amp;quot;&amp;#039; are now mutually exclusive with &amp;#039;&amp;lt;search&amp;gt;&amp;#039; subelements.&lt;br /&gt;
:* &amp;lt;zzgrep&amp;gt;: Runtime optimization: Now only the files to which at least one search applies are processed.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.0.10, 2014-03-22:&lt;br /&gt;
:* ZZDIFF: Added option &amp;#039;-keep-going&amp;#039; resp. ANT task attribute &amp;#039;keepGoing=&amp;quot;true&amp;quot;&amp;#039;: Report errors and continue with next file.&lt;br /&gt;
  &lt;br /&gt;
; Changes in version 1.0.9, 2014-03-20:&lt;br /&gt;
:* COMMONS.UTIL: Added the SIMPLELOGGING task that was missing from &amp;#039;antlib.xml&amp;#039;.&lt;br /&gt;
:* COMMONS.FILE: Inserted lots of logging.&lt;br /&gt;
:* ZZPATCH: Added the &amp;lt;regex&amp;gt; and &amp;lt;replacement&amp;gt; subelements to &amp;lt;substitute&amp;gt;: Alternative to the &amp;#039;regex=...&amp;#039; and &amp;#039;replacement=...&amp;#039; attributes. The major advantage of the subelements is that they can contain &amp;#039;&amp;lt;![CDATA[...]]&amp;gt;&amp;#039; sections where you don&amp;#039;t have to SGML-escape special characters.&lt;br /&gt;
:* ZZPATCH: Added lots of logging to make ANT build file debugging easier.&lt;br /&gt;
:* ZZPATCH: Contents substitution is no longer line-wise, but allows for multi-line matching and replacement.&lt;br /&gt;
:* ZZFIND: Now searching STDIN iff no file specified.&lt;br /&gt;
:* ZZDIFF: Added diff mode &amp;#039;EXIST&amp;#039;, which is like diff mode &amp;#039;QUIET&amp;#039; but ignores CONTENT differences. &lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.0.8, 2013-11-29:&lt;br /&gt;
:* ZZDIFF: Absent file modes COMPARE_*_WITH_EMPTY: Added and deleted directories were counted as difference, although they shouldn&amp;#039;t.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.0.7, 2013-11-26:&lt;br /&gt;
:* The ZZ tools now live in ONE jar file; there is a new &amp;#039;Main&amp;#039; class that forks into the various tools&lt;br /&gt;
:* Renamed the tasks from &amp;#039;de.unkrig.zz.diff&amp;#039; to &amp;#039;zzdiff&amp;#039;.&lt;br /&gt;
:* ZZDIFF: Absent file modes COMPARE_ADDED_AND_DELETED_WITH_EMPTY and COMPARE_ADDED_WITH_EMPTY: Added and deleted DIRECTORIES are now treated as EMPTY directories.&lt;br /&gt;
:* ZZDIFF: Added ANT task property &amp;#039;property&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.0.6, 2013-10-02:&lt;br /&gt;
:* ZZPATCH: &amp;#039;-patch&amp;#039; now preserves line separators (instead of silently replacing them with the default line separator).&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.0.5, 2013-10-01:&lt;br /&gt;
:* ZZDIFF: Added the &amp;#039;encoding&amp;#039; attribute to the ant task.&lt;br /&gt;
:* ZZFIND: Added the missing &amp;#039;&amp;lt;cat&amp;gt;&amp;#039; and &amp;#039;&amp;lt;ls&amp;gt;&amp;#039; actions to the ant task.&lt;br /&gt;
:* ZZFIND: Added the &amp;#039;-encoding&amp;#039; option to the command line tool.&lt;br /&gt;
:* ZZGREP: Added the &amp;#039;encoding&amp;#039; attribute to the ant task.&lt;br /&gt;
:* ZZGREP: Added the &amp;#039;-encoding&amp;#039; option to the command line tool.&lt;br /&gt;
:* ZZPATCH: Added &amp;#039;inputEncoding&amp;#039; and &amp;#039;outputEncoding&amp;#039; to &amp;#039;substitution&amp;#039; and &amp;#039;patch&amp;#039;.&lt;br /&gt;
:* ZZPATCH: Added &amp;#039;patchFileEncoding&amp;#039; to &amp;#039;patch&amp;#039;.&lt;br /&gt;
:* ZZPATCH: &amp;#039;-substitute&amp;#039; now preserves line separators (instead of silently replacing them with the default line separator).&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.0.4, 2013-09-22:&lt;br /&gt;
:* ZZFIND: The &amp;#039;readable&amp;#039;, &amp;#039;writable&amp;#039;, &amp;#039;size&amp;#039; and &amp;#039;modificationTime&amp;#039; tests were missing from the ANT task&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.0.3, 2013-09-22:&lt;br /&gt;
:* ZZDIFF: Added the &amp;#039;absentFileMode&amp;#039; option (a.k.a. as &amp;#039;-new-file&amp;#039; and &amp;#039;-unidirectional-new-file&amp;#039;).&lt;br /&gt;
:* SimpleLogging: VERBOSE messages were not printed because the OUT_HANDLER was misconfigured.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.0.2, 2013-07-05:&lt;br /&gt;
:* Fixed a major bug: &amp;#039;SelectiveContentsTransfomer&amp;#039; executed BOTH delegates when the predicate evaluates to FALSE. This didn&amp;#039;t hurt in many cases, but for &amp;#039;zzpatch -update&amp;#039; it did.&lt;br /&gt;
&lt;br /&gt;
; Changes in version 1.0.1, 2013-06-14:&lt;br /&gt;
:* Major refactoring of &amp;#039;de.unkrig.commons&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
; Version 1.0.0, 2012-10-03:&lt;br /&gt;
Initial release.&lt;/div&gt;</summary>
		<author><name>Aunkrig</name></author>
	</entry>
</feed>