Masukkan file tar ke dalam subdirektori

8

Saya memiliki pengaturan direktori seperti berikut:

folder_x
file.y
file.z

Saya ingin membuat file tar sehingga ketika diekstraksi strukturnya akan terlihat seperti ini:

dir_q/folder_x
dir_q/file.y
dir_q/file.z

Bagaimana saya bisa membuatnya bekerja dengan menggunakan tar? Sebagai referensi, perintah saat ini yang saya gunakan adalah:

tar -czf archive.tar.gz file.y file.z folder_x

sumber

Jawaban:

9

Saya tidak pernah menggunakan opsi --transformasi, tetapi saya yakin akan melakukan apa yang Anda butuhkan:

tar -czf archive.tar.gz --transform 's,^,dir_q/,' file.y file.z folder_x

Sadarilah penggunaan ,alih - alih /sebagai pemisah, sehingga kami dapat menambahkan garis miring.

Marnix A. van Ammers
sumber
Hmm, sepertinya tidak melakukannya dengan benar: file.z-> dirfile.zdan dirfolder_x. Saya akan bermain-main dengan regex juga melihat apakah saya bisa mendapatkannya dengan cara yang saya inginkan.
1
Begini caranya: tar -czf archive.tar.gz --transform's, ^, dir_q /, 'file.y file.z folder_x Sed memungkinkan, alih-alih /, menghindari ambiguitas ketika ada garis miring di ekspresi Anda . Biasanya saya akan mengatakan Anda dapat lolos dari tebasan dengan backslash, tetapi sed (setidaknya, gnu sed) tidak menafsirkannya dengan benar.
jdb
tar --transform tampaknya tidak berfungsi pada MacOS
Alexander Mills
Di MacOS Anda bisa menginstal macports dan gnutar untuk mendapatkan opsi --transform. Atau unduh & kompilasi sendiri gnutar.
Marnix A. van Ammers
1

Jika Anda tidak keberatan membuat direktori baru ...

mkdir dir_q; tar -C $ _ -xzvf archive.tar.gz

sebagai alternatif, buat direktori baru, undar file ke direktori itu, kemudian tar ulang dari direktori induk untuk memasukkan nama itu dalam versi yang diekstrak. Dengan begitu Anda tidak perlu mengingat permohonan yang sangat panjang.

John T
sumber