2012-03-15 27 views
22

Bir dizinim var. Sık sık şu komutla sıkıştırmak /var/tmp/my-dir/:Dizin Adını Yeniden Adlandırın Tarın Olmadan Önce

$ cd /var/tmp/ 
$ tar -zcf my-dir.tar.gz my-dir/* 

Daha sonra, my-dir.tar.gz tar, bunun geçerli dizinde my-dir/ oluştururuz. my-dir dizininin tarballun içinde "sarıldığı" gibi görünüyor. my-dir yeniden adlandırmak için katran seçeneği var mıdır? your-dir gerçek tarring gerçekleşir. Böylece, Teşekkürler.

cevap

41

Hangi tar? Dosya adlarını değiştirmek için bir sed ifade verdiğiniz --transform bağımsız değişkenini kabul eder. Örneğin

, açma sırasında adlandırmak:

tar -zxf my-dir.tar.gz --transform s/my-dir/your-dir/ 

BSD katran ve S katran Benzer bir -s argüman, basit /old/new/ (bir genel sed ifade) alarak.

+0

Vay, çok teşekkür ederim! Bu bir çekicilik gibi çalışır (kabul edilir, +1). – moey

+1

@ephemient, --transform = 'pattern' kullanmak zorundaydım: sudo tar -xjvf thunderbird-14.0.tar.bz2 --transform = 's/thunderbird \ (\/\)/thunderbird.14 \ 1 Ln -sf thunderbird.14 thunderbird'lü/' , güncelleme thunderbird bir sorun olmayacak! \ m/ –

+1

'-transform' 1,2, ne yazık ki RHEL ve CentOS 5.10 tanıtıldı sadece tar v1.15 :(ile geliyor –

0

Mac için -s bayrağı çalışıyor. kompres üzerinde

Yeniden adlandır: özü üzerine

tar -zcf my-dir.tar.gz -s /^my-dir/your-dir/ my-dir/*

Yeniden adlandır:

tar -zxf my-dir.tar.gz -s /^my-dir/your-dir/

İlgili konular