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 № 1Zakł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}"