Lebih
Zip semua file dalam direktori?
Apakah ada cara untuk zip semua file dalam direktori tertentu dengan zip
perintah? I'telah mendengar tentang menggunakan *.*
, tapi saya ingin bekerja untuk extensionless file, terlalu.
487
4
Anda hanya dapat menggunakan
*
; tidak perlu untuk*.*
. Ekstensi File yang tidak khusus pada Unix.*
cocok dengan nol atau lebih karakter—termasuk titik. Sehingga cocokfoo.png
, karena itu's nol atau lebih karakter (tujuh, tepatnya).Perhatikan bahwa
*
secara default doesn't pertandingan file yang diawali dengan titik (juga tidak*.*
). Ini adalah sering apa yang anda inginkan. Jika tidak, di bash, jika andashopt -s dotglob
itu akan (tetapi masih akan mengecualikan.
dan..
). Kerang lainnya memiliki cara yang berbeda (atau tidak sama sekali) termasuk dotfiles.Atau,
zip
juga memiliki-r
(rekursif) pilihan untuk melakukan seluruh pohon direktori sekaligus (dan tidak perlu khawatir tentang dotfile masalah):di mana
dirsaya
adalah direktori yang berisi file anda. Catatan yang dihasilkan kantong akan berisi struktur direktori serta berkas. Sebagai peterph poin dalam komentarnya, hal ini biasanya dilihat sebagai hal yang baik: pengekstrak zip rapi akan menyimpan semua file diekstrak dalam satu subdirektori.Anda juga dapat memberitahu zip untuk tidak menyimpan jalur dengan
-j
/--sampah-jalan
pilihan.The
zip
perintah dilengkapi dengan dokumentasi yang memberitahu anda tentang semua (banyak) pilihan; tipe priazip
untuk melihat bahwa dokumentasi. Ini isn't unik untuk zip; anda bisa mendapatkan dokumentasi untuk sebagian besar perintah dengan cara ini.Dalam kasus saya saya ingin zip masing-masing file ke arsip, jadi saya lakukan hal berikut (dalam
zsh
):Cara lain adalah dengan menggunakan menemukan dan xargs: (ini mungkin termasuk "." direktori di kantong, tapi itu masih harus ekstrak dengan benar. Dengan tes saya, zip dilucuti dot sebelum kompresi)
cari . -type f -exec zip zipfile.zip {} +
(The
+
dapat diganti dengan\;
jika versimenemukan
tidak mendukung+
untuk exec. Itu akan menjadi lebih lambat meskipun...)Ini akan secara default mencakup semua sub-direktori. Pada GNU menemukan
-maxdepth
dapat mencegah hal itu.Lain (lambat) metode untuk melakukan hal ini (yang menambahkan satu file zip pada satu waktu):
Ini memiliki dotfile isu-isu
*
(solusi ditambahkan) dan akan mulai zip sekali untuk setiap file, menambahkan untuk arsip. Dibash
, itu akan berurusan dengan sejumlah besar file.Itu akan menjadi lebih lambat dari sebagian besar metode lain, tapi ini relatif sederhana.