jarファイルからファイルを抽出し、違いを取得します。

jarファイルからファイルを抽出し、違いを取得します。

実際には、さまざまなバージョンのjarファイルにxsdがあり、バージョン10.xyzから11.abcの間でxsdが変更されていることを確認したいと思います。

以下に示すように、読み取り専用の別のリリースディレクトリがあります。いくつかの/m/n/i/10.xyzまたは11.xyzで、私のリリースディレクトリ10.xyzまたは11に埋め込まれている可能性があるabc.jarを検索したいと思います。これらすべてのバージョンのいくつかのp / q / r / abc.jarから.xyzを抽出し、xyz.xsdを抽出して比較しますか?そして、バージョンディレクトリへの書き込み権限がありません。

Unixやシェルスクリプトでこれをどのように達成できますか?私はUnixに初めて触れました。ディレクトリ構造

.
|-- 10.1.2.2.0
|   `-- GENERIC
|       `-- RELEASE
          --  x/y/z/abc.jar
|-- 10.1.2.3.0
|   `-- GENERIC
|       `-- RELEASE
          -- x/y/z/abc.jar
|-- 10.1.3.1.0
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.3.0
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.3.0-HOTPLUG
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.3.0BPA
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.3.0WEBSPHERE
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.3.1
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0MLR1
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0MLR10
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0MLR2
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0MLR3
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0MLR4
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0MLR5
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0MLR6
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0MLR7
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0MLR8
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.4.0MLR9
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.5.0
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.5.0.QA.06012009
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.5.1
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.5.2
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3.5.3
|   `-- GENERIC
|       `-- RELEASE
|-- 10.1.3QAMLR6
|   `-- GENERIC
|       `-- RELEASE
|-- 11.1.1.1.0
|   `-- GENERIC
|       `-- RELEASE
|-- 11.1.1.1.0.BPA
|   `-- GENERIC
|       `-- RELEASE
|-- 11.1.1.1.0.CEP
|   `-- GENERIC
|       `-- RELEASE
|-- 11.1.1.2.0
|   `-- GENERIC
|       `-- RELEASE
|-- 11.1.1.3.0
|   `-- GENERIC
|       `-- RELEASE
`-- 11.1.1.4.0
    `-- GENERIC
        `-- RELEASE

93 directories, 0 files

ベストアンサー1

abc.jar各ディレクトリに1つしかないとします。

basedir=path_to_your_Release_dirs
mkdir /var/tmp/reldiff
cd /var/tmp/reldiff
for x in Release1 Release2 Release3; do
   mkdir $x
   cd $x
   find $basedir/$x -name abc.jar -print0 | xargs -0 unzip -j xyz.xsd
   cd ..
done
diff3 */xyz.xsd

おすすめ記事