
そこで、zipファイルを反復処理し、unzip -l $filenameでその内容を一覧表示し、パターンに一致するものを探すスクリプトがあります。(.*)report.xml
この場合、 test0\report.xml
しかし、を使用して解凍しようとするとunzip -j $filename
、caution: 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
unzip
filename not matched: test0\report.xml
取得した文字列は一致するはずなのに、返されました。
このツールはいくつかのワイルドカードをサポートしています。次のコマンドでファイルを解凍できました:
unzip -j foo.zip 'test0?report.xml'
バグですか? おそらく、スクリプトに何らかのロジックを追加するか、または、このような状況 (まれであることを願いますが) が再び発生した場合は、手動で解凍するだけです。または、スクリプト内でunzip
一致させる代わりに、でサポートされているこれらのワイルドカードを利用して、次の操作を実行してください。(.*)report.xml
unzip
unzip -j foo.zip '*report.xml'