/ / Wyodrębnij listę nazw plików w archiwum zip, gdy `unzip -l` - linux, unix, ksh

Wyodrębnij listę nazw plików w archiwum zip, gdy `unzip -l` - linux, unix, ksh

Kiedy robię unzip -l zipfilename, Widzę

1295627  08-22-11 07:10   A.pdf
473980  08-22-11 07:10   B.pdf
...

Chcę tylko zobaczyć nazwy plików. Próbuję tego

unzip -l zipFilename | cut -f4 -d" "

ale nie sądzę, żeby ogranicznik był sprawiedliwy " ".

Odpowiedzi:

24 dla odpowiedzi № 1

Zakładając, że żaden z plików nie ma spacji w nazwach:

unzip -l filename.zip | awk "{print $NF}"

Moje wyjście rozpakowane ma zarówno nagłówek, jak i stopkę, więc skrypt awk staje się:

unzip -l filename.zip | awk "/-----/ {p = ++p % 2; next} p {print $NF}"

Wersja, która obsługuje nazwy plików ze spacjami:

unzip -l filename.zip | awk "
/----/ {p = ++p % 2; next}
$NF == "Name" {pos = index($0,"Name")}
p {print substr($0,pos)}
"

93 dla odpowiedzi № 2

Najłatwiej to zrobić za pomocą następującego polecenia:

unzip -Z -1 archive.zip

lub

zipinfo -1 archive.zip

Spowoduje to wyświetlenie tylko nazw plików, po jednej w każdym wierszu.

Oba polecenia są dokładnie równoważne. The -Z opcja informuje unzip, aby traktował pozostałe opcje jako opcje zipinfo. Zobacz strony man dla rozsunąć suwak i zipinfo.


6 dla odpowiedzi nr 3

Jeśli potrzebujesz zaspokoić nazwy plików z spacje, spróbuj:

unzip -l zipfilename.zip | awk -v f=4  " /-----/ {p = ++p % 2; next} p { for (i=f; i<=NF;i++) printf("%s%s", $i,(i==NF) ? "n" : OFS) }"

3 dla odpowiedzi № 4

Użyj awk:

unzip -l zipfilename | awk "{print $4}"