Или используйте --transform/ --xform, как это было предложено Магнусом :tar -cf /path/to/output.tar -C /path/to/input-directory . --xform='s!^\./!!'
n.st
Ответы:
6
Вы не
name=${PWD##*/}
cd ..
tar czf "$name.tar.gz" "$name"
(Примечание: это не работает, если в вашей оболочке включено отслеживание символьных ссылок текущего каталога и доступ к текущему каталогу осуществляется через символическую ссылку.)
Да, это не то, что вы спросили, но это то, что вы должны сделать. Архивы, которые раскрывают много файлов в текущем каталоге, раздражают: на каждого человека, распаковывающего архив, ложится бремя создания целевого каталога для файла, и если они случайно распаковывают их в непустом каталоге, трудно убирать В большинстве случаев архив должен создавать один каталог верхнего уровня, имя которого является базовым именем архива.
Понял. Если я правильно помню, просто очень раздражает необходимость сделать дополнительный шаг, чтобы распаковать архив в определенную директорию (например, tar xzvf archive.tar.gz && mv archive/* /outputvs. unzip archive.zip -d /output)
Нафтули Кей
9
Точка появляется потому, что tarсоздает структуру пути так, как вы указываете в аргументах. Так как вы дали . В качестве источника архив также создается в той же структуре.
--transform
/--xform
, как это было предложено Магнусом :tar -cf /path/to/output.tar -C /path/to/input-directory . --xform='s!^\./!!'
Ответы:
Вы не
(Примечание: это не работает, если в вашей оболочке включено отслеживание символьных ссылок текущего каталога и доступ к текущему каталогу осуществляется через символическую ссылку.)
Да, это не то, что вы спросили, но это то, что вы должны сделать. Архивы, которые раскрывают много файлов в текущем каталоге, раздражают: на каждого человека, распаковывающего архив, ложится бремя создания целевого каталога для файла, и если они случайно распаковывают их в непустом каталоге, трудно убирать В большинстве случаев архив должен создавать один каталог верхнего уровня, имя которого является базовым именем архива.
источник
tar xzvf archive.tar.gz && mv archive/* /output
vs.unzip archive.zip -d /output
)Точка появляется потому, что
tar
создает структуру пути так, как вы указываете в аргументах. Так как вы дали . В качестве источника архив также создается в той же структуре.Вы можете попробовать это и проверить:
Обновление ответа с помощью комментария n.st
источник
*
Glob не будет соответствовать скрытые файлы.лучше добавить ^ перед предыдущим.
ИЛИ все "/" в полном пути внутри архива будут удалены, если только "/" не является концом полного пути.
источник