W moim wierszu poleceń bash, gdy używam unzip -l test.zip
, otrzymuję dane wyjściowe w następujący sposób:
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
Ale interesują mnie tylko wiersze zawierające szczegóły pliku.
Próbowałem wykonać filtrowanie za pomocą grep w następujący sposób:
unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"
Ale jest długi i podatny na błędy (np. Nazwa pliku Archiwum na tej liście zostanie usunięte)
Czy są jakieś inne opcje z unzip -l (sprawdziłem stronę podręczną rozpakowania i nie znalazłem żadnej) lub inne narzędzie do tego?
Ważne jest dla mnie, aby tak naprawdę nie rozpakować archiwum, ale po prostu sprawdzić, jakie pliki są w środku.
command-line
filenames
zip
рüффп
źródło
źródło
grep
można przekształcić w skrypt Awk, zwykle z dużo większą precyzją.awk 'NR >3 { if (/^ *---/) exit 0; print }'
skróci pierwsze trzy wiersze oraz stopkę, a także będzie w zasięgu łatwego wyodrębnienia samej nazwy pliku (wskazówka:)print substr($0, 29)
.Odpowiedzi:
Lub:
Wymienia tylko pliki.
Jeśli nadal potrzebujesz dodatkowych informacji dla każdej nazwy pliku, możesz:
Lub:
Lub (zakładając GNU
head
):źródło
unzip -Z1 zipfile.zip
wypisze: katalog / i katalog / plik.rozszerzenie (uwaga: nazwy katalogów z. są prawdopodobne, więc dodanie| grep .
nie działa)