Witam muszę rozpakować plik, który mógłby mieć katalog i chcę wykluczyć wszystko w tym katalogu, próbowałem wielu opcji i wyglądałem tu również, ale nie wydaje mi się znaleźć jakieś dobre rozwiązanie.linux unzip z wyłączeniem wszystkiego w folderze i pod
Są zawartość pliku zip: Uwaga głębokość WYKLUCZAJă folder jest nieznana, ale musimy wykluczyć wszystkiemu
$unzip -l patch2.zip
Archive: patch2.zip
Length Date Time Name
--------- ---------- ----- ----
0 2013-10-29 17:42 EXCLUDE/
0 2013-10-29 17:24 EXCLUDE/inner/
0 2013-10-29 17:24 EXCLUDE/inner/inner1.txt
0 2013-10-29 15:45 EXCLUDE/file.txt
0 2013-10-29 15:44 patch.jar
0 2013-10-29 15:44 system.properties
--------- -------
0 6 files
Próbowałem tego polecenia, które tylko wyodrębnić pliki w nim, ale nie folder i jego zawartość:
$unzip -l patch2.zip -x EXCLUDE/*
Archive: patch2.zip
Length Date Time Name
--------- ---------- ----- ----
0 2013-10-29 17:42 EXCLUDE/
0 2013-10-29 17:24 EXCLUDE/inner/
0 2013-10-29 17:24 EXCLUDE/inner/inner1.txt
0 2013-10-29 15:44 patch.jar
0 2013-10-29 15:44 system.properties
--------- -------
0 5 files
Dzięki za pomoc.
+1 za odpowiedź, ponieważ jest blisko pytania OP. Moja własna to po prostu "dobra do poznania" alternatywa ^^ (która jest teraz mało znana, podczas gdy była bardziej znana we wczesnych dniach Linuksa) –
Dzięki temu działało idealnie. Czy możesz wyjaśnić, co masz na myśli, mówiąc: "zostanie przekazany do rozpakowania, w przeciwnym razie zostanie rozszerzony przez powłokę przed przekazaniem do rozpakowania". – Ravi
@Ravi Przeczytaj o [Globbing] (http://tldp.org/LDP/abs/html/globbingref.html), który jest, gdy powłoka zamienia wzorce wieloznaczne na nazwy plików. np. gdy uruchomisz 'echo *', powłoka "rozszerza" '*' na listę nazw plików np. 'plik1',' plik2' itp przed uruchomieniem 'echo'. W rezultacie 'echo *' zmienia się w 'echo file1 file2'. Program 'echo' nigdy nie widzi symbolu wieloznacznego, widzi tylko argumenty' plik1' i 'plik2'. Ale jeśli zacytujesz wzór, echo, to powłoka nie wykona tego rozszerzenia, a wzorzec zostanie przekazany jako argument do programu, który może go zinterpretować, jakkolwiek wybierze. – dogbane