У меня есть zip-архив на Linux, в который я загружаю каждый день ~ 20 файлов с датой (отформатированной yyyymmdd) в имени. Мне нужно извлечь все файлы из выбранного дня, поэтому я проверяю, если они находятся в архивеLinux unzip list с маской не удается извлечь все соответствующие файлы
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-команда с маской извлекает все файлы, которые ранее были перечислены в unzip -l. К счастью, я могу распаковать все эти файлы, давая точные имена в списке:
unzip fileArchive.zip TRANSACTIONS_20160910.csv FILE1_D_20160910.CSV FILE2_D_20160910.CSV ... FILE17_D_20160910.CSV -d /var/tmp/
Так архив не поврежден. Просто разархивируйте на этот день 20160910 сбой при использовании маски.
Есть ли у вас какие-либо идеи, что может быть неправильным? С уважением,
Отредактировано: Ниже приведен полный код (части имен файлов вырезаны), который показывает, что маска без кавычек работает для симметричного архива «ск», и для этого «CZ» это не ,
распаковать «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
Это неловко! я ожидал бы маска цитаты работать на обоих архивах точно так же
Что выход 'Ls -hl/root_path/ск/input_data/fileArchive'? –
Я сделал для обоих dirs: 'ls -hl/root_path/sk/input_data/fileArchive' возвращает' -rwxrwx --- + 1 jd74630 root 1.2G 3 ноя 3 21:36 fileArchive.zip' для cz возвращает '- rwxrwx --- + 1 jd74630 root 4.1G Nov 3 21:36 fileArchive.zip' Интересно, что теперь распаковать маску работает _only_ с кавычками –
В какой-то момент вы случайно распаковали файлы в '/ root_path/sk/input_data/fileArchive'. Позже вы удалили их. –