В моей командной строке 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"
Но он длинный и подвержен ошибкам (например, имя файла Archive в этом списке будет удалено)
Есть ли другие варианты с помощью unzip -l (я проверил man-страницу unzip и не нашел) или другого инструмента для этого?
Для меня важно не разархивировать архив, а просто посмотреть, какие файлы находятся внутри.
grep
может быть преобразовано в скрипт Awk, обычно с гораздо большей точностью.awk 'NR >3 { if (/^ *---/) exit 0; print }'
будет обрезать первые три строки, а также нижний колонтитул, а также будет легко достать только имя файла (подсказка:)print substr($0, 29)
.