Bir tarball'dan belirli bir dizini nasıl ayıklayabilirim? ve önde gelen bir dizini çıkarmak?


12

Wordpress tarball'dan belirli bir dizini ayıklamak istiyorum. özellikle wp-includesiçin .. Görünüşe göre tarball içindeki dizin yapısı, wordpress/wp-includesancak ./wp-includesçıkarıldıktan sonra ihtiyacım var, önde gelen wordpress dizini yok. Bunu nasıl yaparım?

Yanıtlar:


13

Belirli bir dizini (ve içeriğini özyinelemeli olarak) ayıklamak için, onu komut satırına fazladan bir bağımsız değişken olarak iletmeniz yeterlidir. İle GNU tar , sen bir lider dizini şerit olabilir --strip-componentsseçeneğiyle (ve daha genel olarak dosya isimleri dönüşümü --transform). Linux olmayan sistemlerde pax (POSIX'te bulunur, ancak bazı Linux dağıtımları varsayılan kurulumlarından atlar) ve -sseçeneğini kullanabilirsiniz.

tar xf foo.tar --strip-components=1 wordpress/wp-includes  #GNU tar
pax -r <foo.tar -pp -s '!^wordpress/!!' wordpress/wp-includes

Her şeyi boş isme yeniden yazmak için bir kural ekleyerek dahil etme listesini yeniden yazma kuralları ile birleştirebilirsiniz (“çıkartma” anlamına gelir; kural yalnızca önceki kurallar eşleşmediğinde geçerlidir).

pax -r <foo.tar -pp -s '!^wordpress/\(wp-includes/\)!\1!' -s !.*!!

5

GNU katranınız olduğunu varsayarsak, şunları kullanabilirsiniz --strip-components:

$ tar xaf tarball.tar.gz --strip=1 wordpress/wp-includes

BSD tar'ın mevcut sürümlerinin de desteklediğine inanıyorum --strip-components. En kötü durumda, şunları yapabilirsiniz:

$ tar xzf tarball.tar.gz wordpress/wp-includes
$ mv wordpress/wp-includes .
$ rmdir wordpress

İkincisini sadece aceleyle yaptım, ancak ilkinin var olduğunu bilmek güzel.
Kasım'da xenoterracide

Soyulmuş bileşenin (örn. wordpress) Açıkça isimlendirilmesini gerektirmeyen bir komut kullanılabilir mi? GitHub önceden bilmiyorum soyulmuş bileşen git revizyon içeren tarballs ayıklarken buna ihtiyacım var.
tjanez
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.