Mam 348 plików zip i chcę znaleźć plik, który znajduje się w jednym z plików zip, unzip -l
czy nie działa z dzikimi kartami?
Jak mogę wyświetlić zawartość wszystkich .zip
plików i grep
poprzez scaloną listę wszystkich plików zawartych w zamkach?
Mam 348 plików zip i chcę znaleźć plik, który znajduje się w jednym z plików zip, unzip -l
czy nie działa z dzikimi kartami?
Jak mogę wyświetlić zawartość wszystkich .zip
plików i grep
poprzez scaloną listę wszystkich plików zawartych w zamkach?
Odpowiedzi:
Korzystanie zipinfo
jest tutaj dobrym rozwiązaniem. Jednak na ogół, gdy chcesz zastosować polecenie do listy plików, a polecenie nie akceptuje listy plików, możesz użyć for
pętli:
for file in *.zip; do
unzip -l "$file"
done \
| grep "\.zip\|setup"
Jeśli plik, którego szukasz, zawiera spacje, takie jak your file
:, w wyrażeniu regularnym grep musisz uciec każdego spacji ukośnikiem odwrotnym grep "\.zip\|your\ file"
.
unzip
, jak żenujące.
find
zamiast.
Możesz użyć zipinfo
. Jest on zawarty w domyślnej instalacji Ubuntu. Sprawdź stronę podręcznika, aby uzyskać więcej informacji.
Na przykład, aby wyszukać wzór setup
w wiązce plików zip w bieżącym katalogu, użyj tego polecenia:
find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
caution: filename not matched: case1.zip
... caution: filename not matched: case348.zip
za każdy zip, przetestowany na dwóch systemach operacyjnych Ubuntu, 11.10 i 12.04.
setup
i wyświetla ten sam błąd, chociaż działa tak:zipinfo -l * | grep "setup"
Aby wyświetlić listę plików w archiwum zip, możesz użyć następującego polecenia.
unzip -l
Aby grep skompresowane archiwum należy użyć skompresowanych narzędzi archiwizacyjnych zbudowanych do pracy z tego typu formatem archiwum.
W przypadku archiwów zip:
zipgrep --help
usage: zipgrep [egrep_options] pattern zipfile [members...]
Uses unzip and egrep to search the zip members for a string or pattern.
W przypadku archiwów tar:
zgrep --help
Usage: /bin/zgrep [OPTION]... [-e] PATTERN [FILE]...
Look for instances of PATTERN in the input FILEs, using their
uncompressed contents if they are compressed.
OPTIONs are the same as for 'grep'.
Istnieje również kilka innych narzędzi, które działają również z archiwami. Możesz potokować wyjście wstawione do grep, aby zrobić to samo.
zcat
zcat my.archive.zip | grep "some text"
Lub możesz skorzystać z funkcji wyszukiwania tych narzędzi
zless
zmore