Ответ 1
Я не верю, что zip может исключить каталог верхнего уровня. Я думаю, ваш лучший выбор - сделать что-то вроде: pushd/foo; zip -r out.zip./bar; POPD;
Но это именно тот ответ, который вы сказали, что не хотите.
Я пытаюсь создать zip файл и хочу сохранить большую часть структуры каталогов, но не rootdir, как определено в командной строке. Команда, которую я использую:
zip -r out.zip /foo/bar/
Я бы хотел, чтобы он переписывал через панель и добавлял все файлы с сохраненной структурой каталогов (что и делает). Однако я не хочу, чтобы "foo" был каталогом верхнего уровня в созданном zip файле. Я бы хотел, чтобы bar был каталогом верхнего уровня.
Есть ли простой способ сделать это? Я понимаю, что я могу сменить каталоги перед тем, как сделать zip, чтобы избежать проблемы, но я ищу решение, которое этого не требует.
Я не верю, что zip может исключить каталог верхнего уровня. Я думаю, ваш лучший выбор - сделать что-то вроде: pushd/foo; zip -r out.zip./bar; POPD;
Но это именно тот ответ, который вы сказали, что не хотите.
Это должно сделать это:
cd /foo/bar/
zip -r ../out.zip *
Архив будет находиться в /foo/out.zip
7z a -tzip out.zip -w foo/bar/.
Если кто-то наткнется на это и не удовлетворен вышеуказанным решением, здесь следует очень простое обходное решение, чтобы не зашивать длинные подкаталоги. Он включает временное создание папки в C:/, а после прошивки просто ее удаления:
ZipFiles <- list.files(".../ZipFiles") # Insert your long subdirectory into .../
dir.create("C:/ZipFiles")
dir.create(".../FolderToBeZipped")
file.copy(from = ZipFiles,to = "C:/ZipFiles")
zip(".../FolderToBeZipped",
files = "C:/ZipFiles")
unlink("C:/ZipFiles",recursive = TRUE)
В результате получается... /FolderToBeZipped.zip/ZipFiles/
Преимущество в том, что вам не нужно находиться внутри подкаталога (или проекта) при выполнении кода.