Więc jeśli dobrze rozumiem, próbujesz zarchiwizować pliki i foldery w określonym folderze, ale bez uwzględnienia folderu głównego.
Przykład:
/test/test.txt
/test/test2.txt
gdzie test.txt i test2.txt byłyby przechowywane w zipie, ale nie / test /
Możesz cd do katalogu / test /, a następnie uruchomić coś takiego,
zip -r filename.zip ./*
Który utworzyłby archiwum w tym samym folderze o nazwie nazwa_pliku.zip. Lub jeśli uruchamiasz go spoza folderu, możesz uruchomić,
zip -r test.zip test/*
/ * To część, która zawiera tylko zawartość folderu, a nie cały folder.
Edycja: OP chciał wielu zamków, rozwiązanie okazało się trochę hackem, jestem ciekawy, czy istnieje lepszy sposób na zrobienie tego.
for d in */ ; do base=$(basename "$d") ; cd $base ; zip -r $base * ; mv "${base}.zip" .. ; cd .. ; done;
for d in */ ; do base=$(basename "$d") ; zip -rj "${base}.zip" "$d" ; done;
zip -r test.zip test/*
nie działa. czy jest jakiś właściwy sposób, aby to osiągnąć spoza katalogu?Użyj opcji
-j
lub--junk-paths
w poleceniu zip.Ze strony podręcznika zip :
źródło
Co powiesz na to polecenie?
źródło
cd
. Miałem nadzieję, że istnieje sposób na dokładniejsze określenie zapisanej ścieżki.Mam nadzieję że to pomoże.
Utrzymuje główną powłokę w tym samym katalogu i zmienia tylko katalog podpowłoki, która umiera po wydaniu polecenia.
źródło