GNU/Linux >> Linux Esercitazione >  >> Linux

Comando per comprimere più directory in singoli file zip?

Ho una singola directory che contiene dozzine di directory al suo interno.

Sono nuovo della riga di comando e sto lottando per trovare un comando che comprimerà ogni sottodirectory in un file sub-directory.zip univoco.

Quindi alla fine la mia directory principale verrà riempita con tutte le mie sottodirectory originali, più il corrispondente .zip file che contengono il contenuto compresso di ciascuna sottodirectory.

È possibile una cosa del genere? In tal caso, mostrami come si fa.

Risposta accettata:

Puoi usare questo loop in bash :

for i in */; do zip -r "${i%/}.zip" "$i"; done

i è il nome della variabile di ciclo. */ indica ogni sottodirectory della directory corrente e includerà una barra finale in quei nomi. Assicurati di cd nel posto giusto prima di eseguire questa operazione. "$i" nomina semplicemente quella directory, inclusa la barra finale. Le virgolette assicurano che gli spazi bianchi nel nome della directory non causino problemi. ${i%/} è come $i ma con la barra finale rimossa, quindi puoi usarla per costruire il nome del file zip.

Se vuoi vedere come funziona, includi un echo prima del zip e vedrai i comandi stampati invece che eseguiti.

Esecuzione parallela

Per eseguirli in parallelo puoi usare & :

for i in */; do zip -0 -r "${i%/}.zip" "$i" & done; wait

Usiamo wait per dire alla shell di attendere il completamento di tutte le attività in background prima di uscire.

Fai attenzione che se hai troppe cartelle nella tua directory corrente, potresti sovraccaricare il tuo computer poiché questo codice non limita il numero di attività parallele.


Linux
  1. Copia file e directory in Linux

  2. Come comprimere più file su Linux

  3. Decomprimere tutti i file in una directory

  4. Numero massimo di file/directory su Linux?

  5. Suddividi un'immagine dd in più file

Comando Ls in Linux (Elenca file e directory)

Come comprimere file e directory in Linux

Rinomina comando in Linux (rinomina più file)

Compressione e archiviazione di file e directory

Come contare i file nella directory su Linux

Nozioni di base sulla riga di comando di Linux:lavorare con file e directory