Creazione di archivi separati per un insieme di file

Ho una directory contenente una grande list di file. Vorrei gzip each file di una maschera in un archivio separato. Come posso farlo automaticamente?

Ad esempio, qui sono contenuti di directory di esempio: – index.html – start.html – myfile1.txt – myfile2.txt – myfile3.txt

Come creare un archivio separato (myfile1.tar.gz, myfile2.tar.gz …) per each file che inizia con 'myfile *'?

se si utilizza la bash potrebbe sembrare così

 per il file in `ls abc_ *`;  do tar -czvf $ file.tar.gz $ file;  fatto

è sufficiente cambiare "abc_" al tuo nome di inizio del file.

Fare attenzione a ri-comprimere i file già compressi, perché iniziano come i file normali.

Cordiali saluti Kenny

Suppongo che tu stia lavorando su una casella Linux con GNU coreutils. In bash fare qualcosa di simile

 find -name "myfile*" -print0 | xargs -n 1 -0 gzip 

Per capire la linea di command di cui sopra, cercare le opzioni in man find e man xargs . Non c'è bisogno di fare i singoli file, penso. Se, per qualche motivo misterioso, hai davvero bisogno del modo in cui hai scritto sopra, usa qualcosa di simile

 find -name "myfile*" -print0 | \ while IFS="" read -r -d $'\0' file do [ -f "${file%.*}.tar.gz" ] || tar czvf "${file%.*}.tar.gz" "${file}" done 

Cerca le spiegazioni in man bash . Saluti!

PS: Per filtrare i file già compressi utilizzare un file [ "${file##*.}" == "gz" ] || precondizione prima della protezione sovrascrittura.