Як зняти архів без кореневої папки, але зберігаючи повну ієрархію всередині неї?


25

Якщо у мене є .tarархів, і коли я його витягую, він видає мені одну папку, яка fooмістить ще деякі речі, наприклад, такі:

foo/
  something.txt
  another.txt
  bar/
    something-else.txt

Чи є спосіб я змінити .tarкоманду, щоб "пропустити" кореневу папку ( fooв даному випадку) і просто витягнути весь вміст цієї папки безпосередньо в свій cwd так:

something.txt
another.txt
bar/
  something-else.txt

Відповіді:


29

Легко. Просто використовуйте --strip-components=1в архіві так:

tar -xf archive.tar --strip-components=1

І як пояснено на офіційній tarсторінці man:

--strip-компоненти = НОМЕР

зніміть NUMBER провідні компоненти з імен файлів при вилученні

Логіка полягає в тому, що якщо шлях складається з foo/something.txtцього пункту, то перший "компонент" цього шляху був би foo/таким, --strip-components=1що фактично випаде foo/з шляху foo/something.txt.

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