因此,我有一个脚本,它迭代 zip 文件,使用 unzip -l $filename 列出其内容,并查找与 pattern 匹配的内容(.*)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'