Necesito comprimir todos los archivos en un directorio por separado, incluidos todos los archivos en los subdirectorios sin eliminar los originales después. Digamos que tengo index.html, quiero tener al final index.html.gzip AND index.html.
Puedo comprimir todos los archivos en mi directorio a través de
gzip -r .
Pero también quiero conservar los archivos originales.
es posible?
*.*
enls
?*.*
coincide con todos los archivos nombrados regularmente, y generalmente no hay directorios. Por supuesto, solo funciona en la mayoría de los casos y generalmente no si lo necesita. Luego usa elfind
comando.ls *.*
no seleccionará archivos como TODO .ls
no se necesita en absoluto :for x in *
. Sin embargo, el usofind
debe serfind . -type f | while read -r x
.-r
encendidoread
.Puede cambiarlo fácilmente para incluir lo que desea comprimir (
-name '*.txt -or -name '*.html
etc.) en lugar de como ahora, excluyendo algunos archivos (ya comprimidos, archivos de respaldo y temporales).Maneja espacios en el nombre de archivo muy bien también.
Cambiar
gzip
aecho gzip
para pruebas. O omita la parte -exec por completo.Editar: Oh, olvidé mencionar que esto no verifica si
<target>.gz
ya existe. Esto puede o no ser un problema.Edit2: Ok, aquí vamos con algo que verifica el archivo existente. Si eso puede ser deseado. Perdón por la oneliney-ness.
My
find
-foo tal vez no sea lo que podría ser, es muy posible que se salte directamente en find.fuente
Solo agregue la opción -c, creo que esto debería funcionar
fuente
gzip 1.6 (junio de 2013) agregó la
-k, --keep
opción, por lo que ahora puede:Encontrado en: /unix/46786/how-to-tell-gzip-to-keep-original-file
fuente
Probado en Debian (gzip 1.3.12-6)
fuente
ls
Es innecesario, uso*
.