Як перелічити файли на zip без додаткової інформації в командному рядку


37

У моєму командному рядку 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).
трійка

Так, я повністю згоден, саме тому я задаю саме це питання: мати краще і життєздатне рішення.
рüффп

Відповіді:


55
zipinfo -1 file.zip

Або:

unzip -Z1 file.zip

Буде вказано лише ті файли.

Якщо ви все ще хочете отримати додаткову інформацію для кожного імені файлів, ви можете зробити:

unzip -Zl file.zip | sed '1,2d;$d'

Або:

unzip -l file.zip | sed '1,3d;$d' | sed '$d'

Або (якщо припустити GNU head):

unzip -l file.zip | tail -n +4 | head -n -2

дякую потужному седу ... саме того, що я хотів; Також цікавий інструмент zipinfo, я цього не знав.
рüффп

Чи є спосіб ігнорувати каталоги? unzip -Z1 zipfile.zipвиведе: каталог / та каталог / file.extension (Примітка: імена каталогів з., ймовірно, тому додавання | grep .не працює)
Мт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.