как добавить файлы из папки в архив вместо самих папок?

это не дубликат создания tar-архива без включения родительского каталога

Если я tar -czf archive directory , каталог будет добавлен в архив. Я хочу добавить файлы directory папки, а не самого каталога, как?
предложите ответ, который не связан с directory

это не дубликат того, что его показывает:
У меня есть каталог с именем somedir с содержимым как abc , xyz :

 ls somedir abc xyz 

Я хочу сделать архив, который будет содержать файлы abc , xyz , not somedir folder

Обновление : если я использую команду tar -C /home/username/dir1/dir2 -cvf temp.tar yourarchive (ответ на вопрос, о котором мой вопрос называется дубликат)
я получаю это:

введите описание изображения здесь

то, что я хотел, это tar czf archive.tar.gz -C yourarchive . , Я получаю это ( что достаточно близко от того, что я хотел ):

введите описание изображения здесь

то, что я хотел, это это (напрямую файлы, нет папки):

введите описание изображения здесь

3 Solutions collect form web for “как добавить файлы из папки в архив вместо самих папок?”

Использовать -C :

 tar czf archive -C directory . 

Это дает указание tar использовать directory качестве рабочего каталога и архивировать все, что содержится в каталоге ( . ).

Использование -C почти эквивалентно использованию cd ; archive выше интерпретируется относительно текущего каталога при запуске tar , затем tar меняет свой рабочий каталог на directory перед интерпретацией . ,

Я не уверен, насколько широко распространена поддержка tar -C , но любой дистрибутив Linux должен ее поддерживать.

пытаться

 tar cvf archive.tar -C somedir $(ls somedir) 

где

  • cvf будет C reate V erbose (ly) F ile Archive.tar
  • -C somedir будет -C somedir чтобы tar использовал somedir
  • $(ls somedir ) файле somedir и $( ) passe result в качестве аргумента

Редактировать:

Как указано в комментарии, используйте ls -A (не ls -a ) для перечисления dotfile.

Вы можете сделать это с помощью pax (1) , который является преемником posix для tar, но он никогда не попадал на него. Он может записывать tar-файлы, и он может выполнять преобразование имени файла, которое вы хотите сделать:

 pax -wzf archive -s '|directory/\?||' directory 

Это ломается:

  • -w написать архив (такой же, как -c для tar)
  • -z сжимать архив (то же, что и tar)
  • -f archive запись в archive файлов (то же, что и tar)
  • -s '|directory/\?||' заменить имена файлов в архиве. Замените directory строк опцией / с пустой строкой. Необязательный / необходим, поскольку сам каталог не заканчивается символом / , но все остальные члены имеют это / . Это не нужно привязывать к началу строки ( ^ ), потому что она заменяет только первое совпадение (например, sed(1) ), и все файлы начинаются с directory/\?

Чтобы быть явным, вы можете добавить:

  • -x ustar записывает файл tar POSIX

но это значение по умолчанию.

Вы должны найти pax в своем репозитории пакетов Linux или BSD. Кажется, есть GNU-pax, но я не знаю этого. У Debian, похоже, есть BSD-версия pax.

  • tar --exclude не исключает. Зачем?
  • Как извлечь tar в другой каталог?
  • Как отобразить индикатор выполнения для инкрементных архивов tar?
  • tar удалить заданный вопрос
  • Правильный синтаксис для включения. * Каталогов с tar
  • Переустановка файла tar или tar.gz в файлы меньшего размера tar / tar.gz
  • Как заставить tar игнорировать последнее изменение файлов / каталогов
  • Запретить показ сообщения о отметке времени при запуске «tar xzf»
  • Распечатывать содержимое каждого файла в tar-архиве
  • создание архива с использованием tar, включая все «dotfiles», но исключая все подкаталоги и структуру каталога wo
  • TAR дает ошибку - tar: вы не можете указать более одного параметра `-Acdtrux 'или` --test-label'
  • Linux и Unix - лучшая ОС в мире.