サブディレクトリ内のファイルを解凍しようとするとエラーが発生します: 注意: ファイル名が一致しません

サブディレクトリ内のファイルを解凍しようとするとエラーが発生します: 注意: ファイル名が一致しません

そこで、zipファイルを反復処理し、unzip -l $filenameでその内容を一覧表示し、パターンに一致するものを探すスクリプトがあります。(.*)report.xmlこの場合、 test0\report.xml

しかし、を使用して解凍しようとするとunzip -j $filenamecaution: filename not matched: test0\report.xml

私は停止し、次のリストを含むファイルを手動で試しました:

7285 2018-05-04 13:34 test0\report.xml

そして、

unzip -j 2747693b-7027-44d3-98f4-a01f1ed139cf.zip test0\report.xml

エラーが出るcaution: filename not matched: test0report.xml

それを回避するために を呼び出そうとしました\\が、代わりに と同じエラーが発生しましたtest0\report.xml

\、/、// などすべて試しましたが、これはバックスラッシュのエスケープの問題ではないと思います。

助けてください。

答え1

Kubuntuで問題を再現しました。ファイル名は文字通りでtest0\report.xml

unzip -j foo.zip test0\\report.xml

unzipfilename not matched: test0\report.xml取得した文字列は一致するはずなのに、返されました。

このツールはいくつかのワイルドカードをサポートしています。次のコマンドでファイルを解凍できました:

unzip -j foo.zip 'test0?report.xml'

バグですか? おそらく、スクリプトに何らかのロジックを追加するか、または、このような状況 (まれであることを願いますが) が再び発生した場合は、手動で解凍するだけです。または、スクリプト内でunzip一致させる代わりに、でサポートされているこれらのワイルドカードを利用して、次の操作を実行してください。(.*)report.xmlunzip

unzip -j foo.zip '*report.xml'

関連情報