Да, эти команды действуют по-разному. Когда вы используете zip
, он будет сохранять пути относительно того, как вы выполняли команду, поэтому запуск zip из разных рабочих каталогов повлияет на результат.
Пример:
.
└── test
├── file1
├── file2
├── file3
└── foo
├── file4
└── file5
ЕслиВ этом примере я нахожусь в корневом каталоге и использую следующую команду:
zip -r test.zip test/*
Я получаю следующий результат:
$ unzip -l test.zip
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
0 2019-11-08 16:51 test/file1
0 2019-11-08 16:51 test/file2
0 2019-11-08 16:51 test/file3
0 2019-11-08 16:53 test/foo/
0 2019-11-08 16:52 test/foo/file4
0 2019-11-08 16:53 test/foo/file5
--------- -------
0 6 files
Однако, если я изменю каталог на test
, иэта команда:
cd test
zip -r ../test2.zip *
Я получаю следующий zip-файл:
$ unzip -l test2.zip
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
0 2019-11-08 16:51 file1
0 2019-11-08 16:51 file2
0 2019-11-08 16:51 file3
0 2019-11-08 16:53 foo/
0 2019-11-08 16:52 foo/file4
0 2019-11-08 16:53 foo/file5
--------- -------
0 6 files
В сторону:
В сторону, если у вас нет каталогаВ структуре можно указать -j
, которая удалит все пути и сохранит все файлы в корне zip-файла:
# from the root of the example structure
zip -j test3.zip test/*
Производит:
$ unzip -l test3.zip
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
0 2019-11-08 16:51 file1
0 2019-11-08 16:51 file2
0 2019-11-08 16:51 file3
0 2019-11-08 16:52 file4
0 2019-11-08 16:53 file5
--------- -------
0 5 files