Назад | Перейти на главную страницу

Как я могу перечислить содержимое zip-архива, но только первого уровня?

У меня есть большой zip-архив, и я хочу знать, что в нем содержится. Я знаю, что могу бегать:

zipinfo file.zip

но вывод слишком подробный и есть много файлов в подкаталогах.

Я хочу увидеть список файлов на верхнем уровне.

пример

Если нормальный вывод:

-sh-3.2$ zipinfo file.zip
Archive:  file.zip   999999999 bytes   99999 files
-rw-r--r--  2.3 unx     3894 tx defN  3-Jul-11 13:11 file1
drwxr-xr-x  2.3 unx        0 bx stor 23-Feb-12 21:00 dir1/
-rw-r--r--  2.3 unx      269 tx defN 23-Oct-11 14:34 dir1/file2
drwxr-xr-x  2.3 unx        0 bx stor 25-Sep-11 03:53 dir1/subdir1/
...
drwxr-xr-x  2.3 unx        0 bx stor 23-Feb-12 21:00 dir2/
...

Мне нужна команда, которая выведет:

-sh-3.2$  <answer>
Archive:  file.zip   999999999 bytes   99999 files
-rw-r--r--  2.3 unx     3894 tx defN  3-Jul-11 13:11 file1
drwxr-xr-x  2.3 unx        0 bx stor 23-Feb-12 21:00 dir1/
drwxr-xr-x  2.3 unx        0 bx stor 23-Feb-12 21:00 dir2/
drwxr-xr-x  2.3 unx        0 bx stor 23-Feb-12 21:00 dir3/
...

Вы можете отфильтровать вывод с помощью grep. Здесь я говорю grep скрыть все строки, содержащие косую черту '/' и все, что после косой черты:

zipinfo file.zip | grep -v "/."

Расширяя и опираясь на ответ @ dvb, вы можете установить уровень глубины с помощью расширенных регулярных выражений:

zipinfo file.zip | egrep "^([^/]*/?){<deepness-level>}$"