Kompres file secara rekursif dalam direktori dan subdirektori menggunakan alat "zip" baris perintah di Mac OS X dan mengecualikan file .DS_Store dari SEMUA subfolder


10

Saya mencoba membuat file ZIP menggunakan zipalat baris perintah yang datang dengan Terminal Mac OS X. Saya ingin secara kompres mengkompresi isi folder saat ini tetapi tidak termasuk .DS_Storefile. Saya mencoba dengan ini:

zip -r myarchive.zip . -x .DS_Store

Tidak -x .DS_Storetermasuk .DS_Storefile dalam folder saat ini, tetapi tidak dalam subfolder yang ditambahkan secara rekursif. Bagaimana cara mengecualikan semua .DS_Storefile dari SEMUA subfolder juga?

Jawaban:


17

Tambahkan wildcard ke opsi kecualikan

zip -r myarchive.zip . -x "*.DS_Store"

Terima kasih atas jawaban anda. Berhasil, tapi mengapa? :) Bisakah Anda jelaskan?
OMA

The *mengembang apa-apa atau bagian dari jalan sebagai pos rekursif kompres file dan direktori mereka. Jadi, ./.DS_Storedulu ./*/.DS_Storedan seterusnya dikecualikan dari arsip.
fd0

Ah, menarik. Jadi wildcard bekerja secara berbeda dari di dunia Windows, di mana "* .DS_Store" hanya berarti "file apa pun yang berakhir dengan .DS_Store"
OMA

1

Sebagian besar waktu saya ingin mengecualikan semua file tersembunyi, seperti .DS_Storeatau .gitatau.gitignore

Dengan satu perintah sederhana Anda dapat mengatasi semua itu dan mengompres semua file dan subfolder secara rekursif

zip -r archive.zip folder -x "*/\.*"

Atau lebih baik lagi, buat fungsi di zsh untuk membuat hidup lebih mudah

open ~/.zshrc

Tambahkan kode berikut di bagian alias Anda

function zip-visible(){
    zip -r $1 $2 -X -x "*/\.*"
}

Muat ulang konfigurasi zsh

source ~/.zshrc

Gunakan seperti ini

zip-visible archive.zip folder

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.