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?
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:źródło
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.
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:
W przypadku archiwów tar:
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.
Lub możesz skorzystać z funkcji wyszukiwania tych narzędzi
źródło