создание zip без записи корневых путей;программно - PullRequest
5 голосов
/ 27 ноября 2010

предположим, что я хочу заархивировать этот каталог Users c: / Users / xah / ErgoEmacs_Source / ergoemacs / build-util /〕

и мой, я хочу, чтобы выходной каталог был 〔c: / Users / xah /xx2 /〕

(мой текущий каталог может быть где угодно. Я вызываю zip в программе elisp), поэтому я делаю

zip -r c:/Users/xah/xx2/build-util.zip c:/Users/xah/ErgoEmacs_Source/ergoemacs/build-util/

, тогда zip запишет полный путь, как это

adding: Users/xah/ErgoEmacs_Source/ergoemacs/build-util/ (stored 0%)
adding: Users/xah/ErgoEmacs_Source/ergoemacs/build-util/.svn/ (stored 0%)
adding: Users/xah/ErgoEmacs_Source/ergoemacs/build-util/.svn/all-wcprops (deflated 56%)
...

я хочу, чтобы пути начинались просто с build-util.

примечание: я вызываю zip в программе (elisp) и не могу или не хочу использовать какую-либо концепциюпеременной окружения.

Возможно ли это с некоторым параметром zip?

Ответы [ 2 ]

4 голосов
/ 12 апреля 2011

Одна из моих любимых функций bash - pushd, она сохраняет директорию, в которой вы находитесь, и перемещает вас в указанную вами директорию.Ответная функция - popd, она возвращает вас в каталог, в котором вы находились до pushd.Например, вы делаете

pushd c:/Users/xah/ErgoEmacs_Source/ergoemacs
zip -r c:/Users/xah/xx2/build-util.zip build-util/
popd

Я думаю, что вы получите то, что хотите.

4 голосов
/ 09 марта 2011

Как ни странно, лучшим вариантом может быть использование jar из Java JDK.

jar -cMf c: /Users/xah/xx2/build-util.zip -C c: / Users / xah/ ErgoEmacs_Source / ergoemacs / build-util /. ​​

"-M" указывает jar не создавать файл манифеста, а -C указывает ему изменить каталоги перед началом архивирования файлов.Документация, на которой я это основал, находится здесь: http://download.oracle.com/javase/tutorial/deployment/jar/build.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...