Czy można programowo pobrać pojedynczy plik z przyzwoitego formatu .tar.gz bez rozpakowywania całego archiwum na dysk? Zasadniczo muszę dostać się do dużych plików tar.gz przez sieć i wyodrębnić 1 mały plik tekstowy. Wydaje się nieco przesadzone, aby wyciągnąć i rozpakować archiwum na dysk, a następnie wyciągnąć plik, a następnie usunąć wszystko inne. Również zamierzam robić to rekurencyjnie (np. Zależności w pakietach, każdy plik tekstowy wskazuje na więcej tar.gz), więc im mniej ruchu sieciowego i cykli procesora mogę uciec, tym lepiej.Wyodrębnij 1 plik z tar.gz z bashem
Odpowiedz
Od strony człowieka, aby wyodrębnić blah.txt z foo.tar.gz:
tar -xzf foo.tar.gz blah.txt
(i to idzie na administratora, oczywiście, ale hej, szybkie odpowiedzi są ładne.)
Czy to działa, jeśli plik znajduje się w podkatalogu wewnątrz struktury tar.gz? – tj111
W nowoczesnych wersjach tar GNU, nie musisz określać opcji "z" w ekstrakcie - sama to wywnioskuje (i podobnie z opcją "j" dla skompresowanych plików bzip2). Tworząc plik, potrzebna jest opcja, aby powiedzieć, co tworzyć, aby symetria nie wyrządzała żadnej szkody. –
@ tj111: jeśli nazwa pliku w pliku tar jest "xyz/pqr/abc.txt", to jest to, co określasz w linii poleceń. Możesz również użyć metaznaków w powłoce: 'xyz/pqr/*' wyodrębni wszystkie pliki we wszystkich podkatalogach w 'xyz/pqr'. Tylko bądź ostrożny, czy powłoka rozszerza "*" dla Ciebie - użyj cytatów, aby to powstrzymać. –
I echo odpowiedzi Jefromi, z dodaniem włączenia ścieżki do pliku, jeśli masz katalogi w pliku tar (dla niektórych może się to wydawać oczywiste, ale początkowo nie było dla mnie jasne, jak określić strukturę katalogów).
Na przykład, jeśli zrobiłeś tar w katalogu src /, a plik blah.txt był pod adresem release1/shared /, powracasz do katalogu src/(jeśli chcesz, aby był on w tym samym miejscu untarred)
tar -xzf tar.gz release1/shared/blah.txt
Jeśli nie pamiętają strukturę katalogów dysku pliku tar (jestem trochę chaotyczna, a czasami zapomnieć, gdzie zrobiłem smołę), zawsze można
tar -tzf tar.gz
zobaczyć zawartość , anulowanie (Ctrl + C), gdy tylko zorientujesz się w strukturze katalogów.
Dzięki za to. Chociaż wydaje się, że potrzebujesz katalogu '. /' Znajdującego się przed katalogami, z dowolnego powodu, aby je przeskanować. na przykład 'tar -xzf tar.gz./release1/shared/blah.txt' – tj111
- 1. Wyodrębnij plik z ciągu ZIP
- 2. Przyrost z bashem
- 3. Rozpakuj plik tar.gz
- 4. rozpakuj plik tar.gz w R?
- 5. Wyodrębnij plik ZIP programowo z biblioteki DotNetZip?
- 6. Jak utworzyć plik tar.gz w R?
- 7. Wyodrębnij dźwięk z fla
- 8. Wyodrębnij frazy z tekstu (1-4 słowo ngrams)
- 9. Wyodrębnij emotikony z tekstu
- 10. Czytaj tar.gz w Javie z kompresją Commons
- 11. Rozpakowywanie tar.gz do katalogu głównego z Gradle
- 12. Wyodrębnij liczby całkowite z zakresów
- 13. Pokaż listę plików i pokaż je w menu z bashem
- 14. Połącz dane wyjściowe dwóch współbieżnych programów z bashem
- 15. Wyodrębnij plik zip do lokalnego folderu
- 16. Wyodrębnij AST z bloku Ruby
- 17. Wyodrębnij standardowe błędy z glm
- 18. Wyodrębnij wszystko z pliku PDF
- 19. Wyodrębnij tekst z pliku PDF
- 20. Wyodrębnij ciąg z ReadOnly java.nio.ByteBuffer
- 21. przeczytaj pierwsze 8 znaków pliku tekstowego z bashem
- 22. Używanie dopasowywania do znajdowania podciągów w łańcuchach z tylko bashem
- 23. Wyodrębnij współrzędne z pliku KML w Javie
- 24. Wyodrębnij reguły gramatyki BNF z pliku yacc
- 25. wyodrębnij tekst z tex, usuń tagi latexowe
- 26. Wyodrębnij historyczne sekundy przestępne z tzdata
- 27. Wyodrębnij zmienne we wzorze z ramki danych
- 28. Wyodrębnij numer z ciągu tekstowego - Excel
- 29. Chcę utworzyć skrypt dla pliku unzip (.tar.gz) za pośrednictwem (Python)
- 30. MATLAB: wyodrębnij submatrix z logicznym indeksowaniem
Nie, to bash związane. A bash to programowanie (rodzaj). –
@Matt Joiner: Nie jest tak naprawdę związany z bash. Jest to pytanie o użycie wspólnego narzędzia systemowego, które można wywołać z dowolnej powłoki, a nie tylko z bash. Ale tak, programowanie w bashu jest rzeczywiście programem, pomimo tego, co czasem słyszeliście. – Cascabel
Tak, myślałem o SU, ale znajduje się on w stosunkowo złożonym skrypcie bash i będzie uruchamiany przez maszynę, a nie przez użytkownika, więc pomyślałem, że to trochę więcej niż SO. – tj111