В моей командной строке 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 и не нашел) или другого инструмента для этого?
Для меня важно не разархивировать архив, а просто посмотреть, какие файлы находятся внутри.
command-line
filenames
zip
рüффп
источник
источник
grep
может быть преобразовано в скрипт Awk, обычно с гораздо большей точностью.awk 'NR >3 { if (/^ *---/) exit 0; print }'
будет обрезать первые три строки, а также нижний колонтитул, а также будет легко достать только имя файла (подсказка:)print substr($0, 29)
.Ответы:
Или:
Будет список только файлов.
Если вы все еще хотите получить дополнительную информацию для каждого имени файла, вы можете сделать:
Или:
Или (при условии GNU
head
):источник
unzip -Z1 zipfile.zip
выведет: directory / и directory / file.extension (Примечание: имена каталогов с. вполне вероятно, поэтому добавление a| grep .
не работает)