У моєму командному рядку bash при використанні unzip -l test.zip
я отримую такий результат:
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
810000 05-07-2014 15:09 file1.txt
810000 05-07-2014 15:09 file2.txt
810000 05-07-2014 15:09 file3.txt
--------- -------
2430000 3 files
Але мене цікавлять лише рядки, що містять дані файлу.
Я спробував зробити фільтрацію за допомогою grep так:
unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"
Але він довгий і схильний до помилок (наприклад, Архів імен файлів у цьому списку буде видалено)
Чи є інші варіанти з unzip -l (я перевірив розпаковувати сторінку man і не знайшов жодної) чи іншим інструментом для цього?
Мені важливо не дуже розпаковувати архів, а просто подивитися, які файли знаходяться всередині.
grep
може бути перероблене на сценарій Awk, як правило, із значно покращеною точністю.awk 'NR >3 { if (/^ *---/) exit 0; print }'
було б обрізано перші три рядки, а також колонтитул, а також можна було б легко дістати лише ім'я файлу (підказка:)print substr($0, 29)
.