Mai mult
Zip fișiere dintr-un director?
Există o modalitate de a zip toate fișierele într-un anumit director cu " zip " comanda? Am'am auzit de folosirea *.*
, dar vreau să lucrez pentru extensionless fișiere, de asemenea.
487
4
Puteți folosi doar
*
; nu este nevoie de*.*
. Extensiile de fișiere nu sunt speciale pe Unix.*
meciuri de zero sau mai multe caractere—inclusiv un punct. Deci se potriveștefoo.png
, pentru ca's zero sau mai multe caractere (șapte, pentru a fi exact).Rețineți că
*
by default nu't se potrivi fișierele care încep cu un punct (nici nu*.*
). Acest lucru este de multe ori ceea ce vrei. Dacă nu, în bash, dacă shopt -s dotglobva (dar va exclude
.și
..`). Alte scoici au moduri diferite (sau deloc), inclusiv dotfiles.Alternativ, " zip " are, de asemenea, o `-r (recursive) opțiunea de a face întregul copaci director la o dată (și nu trebuie să vă faceți griji despre dotfile problema):
unde mydir` este directorul care conține fișierele. Rețineți că a produs zip va conține structura de directoare, precum și fișierele. Ca peterph puncte în comentariul său, acest lucru este de obicei văzută ca un lucru bun: extragere zip va frumos stoca toate fișierele extrase într-un subdirector.
Puteți spune, de asemenea, zip pentru a nu stoca căi cu
-j
/--junk-căi
opțiune.La " zip " comanda vine cu o documentație vă spun despre toate ale sale (multe) opțiuni; tip
om zip
să văd că documentația. Asta e't unic pentru zip; puteți obține documentația pentru cele mai multe comenzi de acest fel.În cazul meu, am vrut să zip fiecare fișier în arhiva proprie, așa că am făcut următoarele (în
zsh
):O altă modalitate ar fi de a găsi și de a folosi xargs: (aceasta ar putea include o "." director în cadrul zip, dar ar trebui să mai extrage corect. Cu testul meu, zip dezbrăcat la punct înainte de compresie)
găsi . -tip f -exec zip zipfile.zip {} +
(Butonul " + "poate fi înlocuit cu
\;
dacă versiunea dumneavoastră de a "găsi" nu suport pe " + " end pentru exec. Acesta va fi mai lent, deși...)Acest va în mod implicit include toate sub-directoarele. Pe GNU găsi-maxdepth` poate preveni asta.
Un alt (lent) metoda pentru a face acest lucru (care adaugă un fișier zip la un moment dat):
Acest lucru are dotfile probleme de
*
(soluție adăugată) și ar fi început zip o singură dată pentru fiecare fișier, adăugându-l la arhiva. Înbash
, s-ar face cu o cantitate mare de fișiere.Ar fi mai lent decât cele mai multe alte metode, dar este relativ simplu.