首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有掩码的Linux解压缩列表无法提取所有匹配的文件。

带有掩码的Linux解压缩列表无法提取所有匹配的文件。
EN

Stack Overflow用户
提问于 2016-10-11 14:04:33
回答 1查看 1.3K关注 0票数 2

我在Linux上有一个zip归档文件,我每天都会在其中加载20个文件,其中包含日期(格式化的yyyymmdd)。我需要从选定的日期提取所有文件,所以我检查它们是否在存档中。

代码语言:javascript
复制
unzip -l fileArchive.zip | grep 20160910

结果,我看到了17个文件,这正是我所期望的:

代码语言:javascript
复制
 32471137  09-12-2016 21:07   TRANSACTIONS_20160910.csv
      181  09-13-2016 21:00   FILE1_D_20160910.CSV
     9345  09-13-2016 21:00   FILE2_D_20160910.CSV
      142  09-13-2016 21:00   FILE3_D_20160910.CSV
  6307637  09-13-2016 21:00   FILE4_D_20160910.CSV
   783975  09-13-2016 21:01   FILE5_D_20160910.CSV
     4812  09-13-2016 21:01   FILE6_D_20160910.CSV
    88306  09-13-2016 21:01   FILE7_D_20160910.CSV
       47  09-13-2016 21:01   G_TEXTE000_D_20160910.CSV
      510  09-13-2016 21:01   FILE9_D_20160910.CSV
   163646  09-13-2016 21:01   FILE10_D_20160910.CSV
       51  09-13-2016 21:02   FILE11_D_20160910.CSV
   158654  09-13-2016 21:02   FILE12_D_20160910.CSV
    31724  09-13-2016 21:02   FILE13_D_20160910.CSV
   269337  09-13-2016 21:02   FILE14_D_20160910.CSV
       89  09-13-2016 21:02   FILE15_D_20160910.CSV
       76  09-13-2016 21:03   FILE16_D_20160910.CSV
       70  09-13-2016 21:01   FILE17_D_20160910.CSV

在接下来的步骤中,我希望使用解压缩掩码来提取这些文件,而不是要提取的文件列表:

代码语言:javascript
复制
unzip  fileArchive.zip *20160910* -d /var/tmp/

结果是只提取了一个文件:

代码语言:javascript
复制
Archive:  fileArchive.zip
  inflating: /var/tmp/G_TEXTE000_D_20160910.CSV

这肯定是错误的,因为当我执行与其他掩码相同的操作时,使用掩码解压缩命令将提取以前由unzip -l列出的所有文件。幸运的是,我可以通过在列表中提供确切的名称来解压缩所有这些文件:

代码语言:javascript
复制
unzip  fileArchive.zip TRANSACTIONS_20160910.csv FILE1_D_20160910.CSV FILE2_D_20160910.CSV ... FILE17_D_20160910.CSV -d /var/tmp/

所以档案没有损坏。简单地解压缩这一天,20160910失败的使用掩码。

你知道可能出了什么问题吗?致以敬意,

编辑的:下面是完整的代码(文件名被剪切),它显示没有引号的掩码对于对称存档"sk“有效,而对于这个"cz”则不起作用。

我解压带有引号的"cz“文件

代码语言:javascript
复制
$ pwd
/root_path/cz/input_data/fileArchive
$ unzip  fileArchive.zip '*20160910*' -d /var/tmp/
Archive:  fileArchive.zip
  inflating: /var/tmp/CZ_C_BAL_D_20160910.csv
  inflating: /var/tmp/CZ_ERNAL_D_20160910.CSV
  inflating: /var/tmp/CZ_A2iMX_D_20160910.CSV
  inflating: /var/tmp/CZ_MENT_D_20160910.CSV
  inflating: /var/tmp/CZ_IER0_D_20160910.CSV
  inflating: /var/tmp/CZ_VIDU_D_20160910.CSV
  inflating: /var/tmp/CZ_ONNEL_D_20160910.CSV
  inflating: /var/tmp/CZ_ENT0_D_20160910.CSV
  inflating: /var/tmp/CZ_E000_D_20160910.CSV
  inflating: /var/tmp/CZ_IST0_D_20160910.CSV
  inflating: /var/tmp/CZ_STE_D_20160910.CSV
  inflating: /var/tmp/CZ_TLOG_D_20160910.CSV
  inflating: /var/tmp/CZ_ENTS_D_20160910.CSV
  inflating: /var/tmp/CZ_ERE0_D_20160910.CSV
  inflating: /var/tmp/CZ_VIDU_D_20160910.CSV
  inflating: /var/tmp/CZ_TEG_D_20160910.CSV
  inflating: /var/tmp/CZ_TEGY_D_20160910.CSV
  inflating: /var/tmp/CZ__ECH_D_20160910.CSV
$ pwd
/root_path/cz/input_data/fileArchive
$ cd /root_path/sk/input_data/fileArchive
$ unzip  fileArchive.zip *20160910* -d /var/tmp/
Archive:  fileArchive.zip
  inflating: /var/tmp/SK_D_20160910.csv
  inflating: /var/tmp/SK_XTERNAL_D_20160910.CSV
  inflating: /var/tmp/SK_X_D_20160910.CSV
  inflating: /var/tmp/SK_MENT_D_20160910.CSV
  inflating: /var/tmp/SK_IER0_D_20160910.CSV
  inflating: /var/tmp/SK_VIDU_D_20160910.CSV
  inflating: /var/tmp/SK_ONNEL_D_20160910.CSV
  inflating: /var/tmp/SK_ENT0_D_20160910.CSV
  inflating: /var/tmp/SK_E000_D_20160910.CSV
  inflating: /var/tmp/SK_IST0_D_20160910.CSV
  inflating: /var/tmp/SK_STE_D_20160910.CSV
  inflating: /var/tmp/SK_TLOG_D_20160910.CSV
  inflating: /var/tmp/SK_ENTS_D_20160910.CSV
  inflating: /var/tmp/SK_ERE0_D_20160910.CSV
  inflating: /var/tmp/SK_VIDU_D_20160910.CSV
  inflating: /var/tmp/SK_TEG_D_20160910.CSV
  inflating: /var/tmp/SK_TEGY_D_20160910.CSV
  inflating: /var/tmp/SK__ECH_D_20160910.CSV
$ cd /root_path/cz/input_data/fileArchive
$ unzip  fileArchive.zip *20160910* -d /var/tmp/
Archive:  fileArchive.zip
replace /var/tmp/CZ_E000_D_20160910.CSV? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
  inflating: /var/tmp/CZ_E000_D_20160910.CSV

太尴尬了!我希望掩码报价能以同样的方式在这两种档案中工作。

EN

回答 1

Stack Overflow用户

发布于 2016-10-11 14:09:12

unzip(1)的手册页说

确保引用任何可能被操作系统解释或修改的字符,特别是在Unix和VMS下。

试一试

代码语言:javascript
复制
unzip fileArchive.zip '*20160910*' -d /var/tmp/
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39979111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档