2015-02-26 8 views
0

Я хочу сжать файлы из файловой системы в каталог в новом zip-архиве или обновить старый. Так вот мой пример:Сжатие файлов в каталоге в zip-файле с оболочкой

directory/ 
    |-file1.ext 
    |-file2.ext 
    |-file3.ext 

в Zip-архив это должно выглядеть следующим образом:

new_directory/ 
    |-file1.ext 
    |-file2.ext 
    |-file3.ext 

Я мог скопировать эти файлы в новый каталог и сжать их оттуда, но я не хочу есть это дополнительный шаг. Я не нашел ответа на эту проблему в google. На странице руководства не упоминается ничего подобного, поэтому я надеюсь, что кто-то может мне помочь.

ответ

2

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

ln -s directory new_directory 
zip -r foo.zip new_directory 
rm new_directory 

Если другие архивные форматы вариант для вас,, то это будет немного проще с архивом дегтя, так как GNU смолы имеет --transform вариант, принимая СЭД чтобы он применялся к имени файла перед добавлением файла в архив.

В этом случае можно использовать (например)

tar czf foo.tar.gz --transform 's:^directory/:new_directory/:' directory 
+0

Спасибо, деготь не вариант для меня, но символическая ссылка является хорошим решением не думал о том, что в первую очередь. – Spectator

Смежные вопросы