LINUX.ORG.RU

Попробуйте этот костыль:

unzip -l <file>.zip | awk '(!N&&/Name/){S=match($0,/Name/);N=FNR+1};(N&&FNR>N&&/^-/){exit};(N&&FNR>N){print gensub(/\/.*/,"","g",substr($0,S)) | "sort -u"}'

AITap ★★★★★
()
Ответ на: комментарий от anonymous

man unzip уже 2 дня читаю, но такого ключа там не нашел. А вот sed еще не доводилось в руках держать.

Могли бы вы для новичка привести конкретный пример команды с использованием sed?

h0lder
() автор топика

Но не весь список файлов, а только верхний уровень, без списка файлов из вложенных директорий.

Посмотреть в mc, толсто но работает

anonymous_sama ★★★★★
()
Ответ на: комментарий от sdio

Правило N+1. Как бы кратко ни был написан awk/sed/чтолибоещё-однострочник, его можно написать ещё короче.

Не подскажете, где описана такая конструкция? А то меня не покидает ощущение, что я пишу на awk perl-скрипты.

AITap ★★★★★
()
Ответ на: комментарий от AITap

AITap> Не подскажете, где описана такая конструкция?

Это регексп по полю $4 — { print } отсутствует, т.к. это действие по-умолчанию.

sdio ★★★★★
()
Ответ на: комментарий от anonymous

vim без ключей тоже показывает файлы из подпапок

h0lder
() автор топика
Ответ на: комментарий от sdio

Теперь понял. Жаль, что пробелы в именах директорий в этом случае приводят к неправильной работе однострочника.

AITap ★★★★★
()
Ответ на: комментарий от AITap

Впрочем, это легко исправить:

unzip -l file.zip | awk '$0 ~ /^[ 0-9\-:]+[^/]*\/?$/'

AITap ★★★★★
()

А если 7z использовать, то даже «кривые кодировки» будут исправлены.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от AITap

Жаль, что пробелы в именах директорий в этом случае приводят к неправильной работе однострочника.

тогда так:

unzip -l file.zip | awk -F'/' 'NF<3 && !$2'

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.