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 elfindcomando.ls *.*no seleccionará archivos como TODO .lsno se necesita en absoluto :for x in *. Sin embargo, el usofinddebe serfind . -type f | while read -r x.-rencendidoread.Puede cambiarlo fácilmente para incluir lo que desea comprimir (
-name '*.txt -or -name '*.htmletc.) 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
gzipaecho gzippara pruebas. O omita la parte -exec por completo.Editar: Oh, olvidé mencionar que esto no verifica si
<target>.gzya 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, --keepopció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
lsEs innecesario, uso*.