Розмістіть файли tar у підкаталозі


8

У мене є налаштування каталогів, такі як:

folder_x
file.y
file.z

Я хотів би створити файл tar, щоб при вилученні структура виглядала приблизно так:

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

Як я можу отримати цю роботу, використовуючи tar? Для довідки використовується поточна команда:

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

Відповіді:


10

Я ніколи не використовував параметр --transform, але, мабуть, він зробив би те, що вам потрібно:

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

Зрозумійте використання , замість / як роздільник, щоб ми могли додати кінцеву косу риску.


Хм, здається, це не робиться належним чином: file.z - & gt; dirfile.z і dirfolder_x. Я буду грати навколо з regex надто дивлюся якщо я можу отримати це шлях я захочу це.
Tim Cooper

1
Ось як я це роблю: tar -czf archive.tar.gz --трансформація, ^, dir_q /, 'file.y file.z folder_x Sed дозволяє, замість /, уникнути неоднозначності, коли у вашому виразі є прямі риси . Зазвичай я б сказав, що ви можете уникнути косої риси з зворотним слесом, але sed (принаймні, gnu sed) не інтерпретує його правильно.
jdb

tar --transform, здається, не працює на MacOS
Alexander Mills

У MacOS ви можете встановити macports і gnutar, щоб отримати опцію --transform. Або завантажити & amp; компілюйте gnutar самі.
Marnix A. van Ammers

1

Якщо ви не маєте наміру створювати новий каталог ...

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

альтернативно, створіть новий каталог, розпакуйте файл до цього каталогу, а потім повторно вкажіть його з батьківського каталогу, щоб включити його ім'я у витягнуту версію. Таким чином, вам не доведеться згадувати супер-тривалий виклик.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.