Создать структуру каталогов zip-ignore

Мне нужно создать zip, используя команду

zip /dir/to/file/newZip /data/to/zip/data.txt

Это работает, но созданный zip файл создает структуру каталогов, имитирующую каталог в необработанный файл. Много лишних папок, которые мне не нужны.

Я не нашел ответа беглым взглядом над страницей man или google hunt.

Ответ 1

Вы можете использовать -j.

-j
--junk-paths
          Store just the name of a saved file (junk the path), and do  not
          store  directory names. By default, zip will store the full path
          (relative to the current directory).

Ответ 2

Используйте параметр -j:

   -j     Store  just the name of a saved file (junk the path), and do not
          store directory names. By default, zip will store the full  path
          (relative to the current path).

Ответ 3

Немного связанный - я искал решение сделать то же самое для каталогов. К сожалению, опция -j не работает для этого: (

Вот хорошее решение о том, как это сделать: https://superuser.com/questions/119649/avoid-unwanted-path-in-zip-file

Ответ 4

Использование -j не будет работать вместе с опцией -r.
Таким образом, обход для него может быть следующим:

cd path/to/parent/dir/;
zip -r complete/path/to/name.zip ./* ;
cd -;

Или встроенная версия

cd path/to/parent/dir/ && zip -r complete/path/to/name.zip ./* && cd -

вы можете направить вывод на /dev/null, если вы не хотите, чтобы вывод cd - отображался на экране

Ответ 5

В качестве альтернативы вы можете создать временную символическую ссылку на ваш файл:

ln -s /data/to/zip/data.txt data.txt
zip /dir/to/file/newZip !$
rm !$

Это также работает для каталога.

Ответ 6

Принятое решение не работает для меня, потому что у меня есть файлы и папки, которые мне нужны для zip. Если я использую параметр -j, он не добавит эти папки в zip. Я нашел это решение, которое работает для меня:

tar -czpvf filename.zip -C path/to/directory/folder .

Все в папке будет в zip, файлах и папках. Обратите внимание, что вы должны добавить период в конец.

Ответ 7

tar не работает для меня.

tar -czpvf filename.zip -C path/to/directory/folder .

Я получаю сообщение об ошибке при попытке разархивировать файл filename.zip

Подпись под конец центральной директории не найдена.

jar отлично работает.

jar cvf filename.zip -C path/to/directory/folder .