我在Linux上有一个zip归档文件,我每天都会在其中加载20个文件,其中包含日期(格式化的yyyymmdd)。我需要从选定的日期提取所有文件,所以我检查它们是否在存档中。
unzip -l fileArchive.zip | grep 20160910结果,我看到了17个文件,这正是我所期望的:
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在接下来的步骤中,我希望使用解压缩掩码来提取这些文件,而不是要提取的文件列表:
unzip fileArchive.zip *20160910* -d /var/tmp/结果是只提取了一个文件:
Archive: fileArchive.zip
inflating: /var/tmp/G_TEXTE000_D_20160910.CSV这肯定是错误的,因为当我执行与其他掩码相同的操作时,使用掩码解压缩命令将提取以前由unzip -l列出的所有文件。幸运的是,我可以通过在列表中提供确切的名称来解压缩所有这些文件:
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“文件
$ 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太尴尬了!我希望掩码报价能以同样的方式在这两种档案中工作。
发布于 2016-10-11 14:09:12
unzip(1)的手册页说
确保引用任何可能被操作系统解释或修改的字符,特别是在Unix和VMS下。
试一试
unzip fileArchive.zip '*20160910*' -d /var/tmp/https://stackoverflow.com/questions/39979111
复制相似问题