як виключити каталоги та перетягувати файли в каталог?


32

Мені потрібно зібрати каталог, виключаючи деякий підкаталог і файл; Я використав це:

zip -r zipfile.zip . -x ".*" -x "app/bower_components" -x "node_modules" -x "*.zip" -x "node_modules"

без жодного успіху; node_modules- це основна папка, поки вона bower_componentsзнаходиться всередині додатка


який ваш результат і який ваш очікуваний результат?
ДЕН

Ви хочете виключити всі підкаталоги або лише деякі з них?
Сергій Колодяжний

Відповіді:


36

Я просто здогадуюсь, чого ти хочеш.

-x ".*"

виключити всі файли, що починаються з крапки

роби це так:

-x .\*

виключити всі файли (з крапкою у назві файлу)

роби це так:

-x \*.\*

-

-x "app/bower_components" -x "node_modules"

виключіть цей каталог та всі файли в ньому

роби це так:

-x app/bower_components/\* -x node_modules/\*

-

-x "*.zip"

виключити всі zip-файли

роби це так:

-x \*.zip

Ви виключаєте node_modules двічі


2
дякую, я отримав це, використовуючи різні повідомлення, що надійшли до цього: zip -r * app / * -x \ app / bower_components / * -x \ node_modules / * -x * .zip
arpho

@arpho Ваш коментар вище повинен бути відповіддю, оскільки, здається, працює для мене ...
chesedo

7

Щось подібне повинно зробити трюк:

zip -r zipped.zip dir1/ -x */\.* *.git* \.* *.zip *.csv *.json *.rb *.bak *.swp *.back *.merge *.txt *.sh dir1/node_modules/**\* dir1/bower_components/**\* dir1/dist/**.*

Тут подано -xсписок каталогів та типів файлів (розширень), які потрібно виключити.


Тепер, коли я знаю, **\*це рекурсивне виключення. Велике дякую.
Duc Tran

6

Якщо припустити, що ваш каталог - це сховище git (і, судячи з питання, це дуже ймовірно), ви можете додати до .gitignoreфайлів каталоги, які ви хочете виключити, і скористатися git archiveкомандою для копіювання вмісту вашого каталогу:

git archive --format=zip HEAD -o zipfile.zip

У вашому прикладі .gitignoreфайл повинен мати такий вигляд:

node_modules
app/bower_components

3

Це ідеально підходить для мене на Ubuntu 16.04:

sudo zip -r /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*" -x "*.cache*" -x "*test*"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.