bagaimana cara mengecualikan direktori dan file zip direktori?

32

Saya perlu zip direktori tidak termasuk beberapa subdirektori dan file; Saya menggunakan ini:

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

tanpa keberhasilan; node_modulesadalah folder dalam folder utama saat bower_componentsberada di dalam aplikasi folder

arpho
sumber
apa hasil Anda dan apa hasil yang Anda harapkan?
DEN
Anda ingin mengecualikan semua subdirektori atau hanya sebagian saja?
Sergiy Kolodyazhnyy

Jawaban:

36

Saya hanya menebak apa yang Anda inginkan.

-x ".*"

kecualikan semua file yang dimulai dengan titik

lakukan seperti:

-x .\*

kecualikan semua file (dengan titik pada nama file)

lakukan seperti:

-x \*.\*

-

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

kecualikan direktori ini dan semua file di dalamnya

lakukan seperti:

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

-

-x "*.zip"

kecualikan semua File zip

lakukan seperti:

-x \*.zip

Anda mengecualikan node_modules dua kali

SARANG
sumber
2
terima kasih saya mendapatkannya, menggunakan berbagai pos tiba untuk itu: zip -r * app / * -x \ app / bower_components / * -x \ node_modules / * -x * .zip
arpho
@arpho Komentar Anda di atas harus menjadi jawaban karena tampaknya berfungsi untuk saya ...
chesedo
7

Sesuatu seperti ini harus melakukan trik:

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/**.*

Berikut -xadalah daftar direktori dan jenis file (ekstensi) untuk dikecualikan.

MikeiLL
sumber
Sekarang saya tahu **\*adalah untuk pengecualian rekursif. Terimakasih banyak.
Duc Tran
6

Dengan asumsi direktori Anda adalah repositori git (dan menilai dari pertanyaannya, kemungkinan besar adalah), Anda dapat menambahkan direktori yang ingin Anda kecualikan ke .gitignorefile dan gunakan git archiveperintah untuk membuka isi direktori Anda:

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

Dalam contoh Anda, .gitignorefile harus terlihat seperti ini:

node_modules
app/bower_components
Jakub Kukul
sumber
3

Ini berfungsi sempurna untuk saya di Ubuntu 16.04:

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

di setiap proyek lewati node_modules seperti ini:

for i in */; do zip -r "${i%/}.zip" "$i" -x "*/\node_modules/*" ; done
nils petersohn
sumber