Aby wyodrębnić określony katalog (i jego zawartość, rekurencyjnie), wystarczy przekazać go jako dodatkowy argument w wierszu poleceń. Za pomocą GNU tar możesz usunąć główny katalog z --strip-components
opcją (i bardziej ogólnie przekształcić nazwy plików za pomocą --transform
). W systemach innych niż Linux możesz użyć pax (jest w POSIX, ale niektóre dystrybucje Linuksa pomijają go podczas domyślnej instalacji) i jego -s
opcję.
tar xf foo.tar --strip-components=1 wordpress/wp-includes #GNU tar
pax -r <foo.tar -pp -s '!^wordpress/!!' wordpress/wp-includes
Możesz scalić listę dołączania z regułami przepisywania, dodając regułę, aby przepisać wszystko do pustej nazwy (co oznacza „nie wypakowuj”; reguła ma zastosowanie tylko wtedy, gdy poprzednie reguły nie pasowały).
pax -r <foo.tar -pp -s '!^wordpress/\(wp-includes/\)!\1!' -s !.*!!
Gilles „SO- przestań być zły”
źródło
wordpress
)? Potrzebuję tego podczas wyodrębniania utworzonych przez GitHub plików archiwalnych, które zawierają wersję git w usuniętym komponencie, którego nie znam z góry.