16

Если у меня есть архив .tar , и когда я его извлекаю, он дает мне одну папку foo содержащую еще кое-что, например:

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

Есть ли способ, которым я могу изменить команду .tar чтобы «пропустить» корневую папку (в данном случае foo ) и просто извлечь все содержимое этой папки прямо в мой cwd следующим образом:

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

1 ответ1

19

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

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

И как объяснено на официальной странице руководства tar :

--strip-компоненты = ЧИСЛО

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

С логикой в том, что если путь состоит из foo/something.txt то первым «компонентом» этого пути будет foo/ поэтому --strip-components=1 будет эффективно удалять foo/ из пути foo/something.txt ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .