Odpowiedzi:
unzip <target-zip-file> '<folder-to-extract/*>' -d <destination-path>
działa dobrze na EL 6
"\\"
byłby użyty (w przeciwnym razie zawsze trzeba pamiętać, które postacie są specjalnymi ucieczkami). Jest to różnica w cytowaniu, jeśli autor miał na myśli „cytowanie globalnego znaku” (niepotrzebne). Tak czy inaczej pojedynczy odwrotny ukośnik to literówka.
Próbować:
unzip /path/to/archive.zip 'in/archive/folder/*' -d /path/to/unzip/to
caution: filename not matched: foldername/\*
gdy uruchamiam, unzip $repozip "$2-master/\*" -d /srv/www/magento/
gdzie $2
jest nazwa folderu w
"path/*"
.
mv
później, aby uzyskać pliki tam, gdzie ich potrzebowałem.
-j
do tego.
-j
usuwa wszystkie informacje o ścieżce, a wszystkie pliki trafiają do folderu docelowego. Czy istnieje sposób na usunięcie tylko wspólnej części ścieżki? Podobne do zip -r
.
Obie istniejące odpowiedzi są poprawne, ale określenie katalogu docelowego jest nieco trudne, co powinno być lepiej wyjaśnione.
Powiedzmy, że /target/root/
jest katalogiem docelowym oryginalnej akcji rozpakowywania, np .:
unzip -qq src.zip -d "/target/root/"
Następnie musimy użyć tego samego /target/root/
katalogu docelowego, nawet jeśli chcemy wyodrębnić tylko określony podkatalog, tak jak działa rozpakowanie:
unzip -qq src.zip "sub/dir/*" "/target/root/"
W końcu reguła jest naprawdę prosta, użyj tego samego docelowego katalogu głównego dla -d
opcji .
Przy okazji, -qq
opcja rozpakowania jest naprawdę cicha, możesz ją usunąć.