Intereting Posts
Не удалось запустить OpenLDAP на freeBSD Сделать bash использовать внешнюю команду `time`, а не встроенную оболочку AWS – ssh: подключение к узлу host_ip host 22: соединение отказано Замените все символы новой строки на пространство, за исключением последнего zsh: Как проверить, включена ли опция Ботинки Lubuntu с черным экраном в верхнем левом углу Установить Git в автономном режиме без sudo Что означает «INFO: задача XXX, заблокированная на протяжении более 120 секунд», в точности означает Linux? Используется ли интерпретатор командной строки bash на emacs? Как изменить содержимое файла? Как постепенно шифровать выходной файл tshark вдоль захвата? Где я должен устанавливать пакеты, созданные из источника, в качестве пользователя без полномочий root? Извлечение широты / долготы из изображения с использованием завитка Вывод журнала из нескольких сценариев Как использовать операторы сравнения в bash?

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

это не дубликат создания 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 . , Я получаю это ( что достаточно близко от того, что я хотел ):

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

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

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

Использовать -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.