GNU/Linux >> Tutoriales Linux >  >> Linux

gzip todos los archivos sin borrarlos

find . -type f | \
while read -r x
do
  gzip -c "$x" > "$x.gz"
done

El -c empuja el resultado a stdout y mantiene el original solo. La desventaja es que necesita encontrar los archivos usted mismo. Para recorridos más sofisticados, puede usar find(1) , sin embargo, como arriba:. busca a partir del directorio actual y -type f devuelve el nombre de todos los archivos regulares.


find . -type f -not \( -name '*.gz' -or -name '*[~#]' \) -exec sh -c 'gzip -c "{}" > "{}.gz"' \;

Puede cambiarlo fácilmente para incluir lo que desea comprimir ( -name '*.txt -or -name '*.html etc.) en lugar de como ahora, excluyendo algunos archivos (archivos ya comprimidos, de copia de seguridad y temporales).

También maneja bien los espacios en el nombre del archivo.

Cambiar gzip a echo gzip para las pruebas. O sáltate 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.

Editar2: Ok, aquí vamos con algo que verifica el archivo existente. Si eso se puede querer. Perdón por la monotonía.

while read file; do if [ ! -f "$file.gz" ]; then echo "Compressing $file"; gzip -c "$file" > "$file.gz"; else echo "Not overwriting $file.gz";  fi  done < <(find . -type f -not \( -name '*.gz' -or -name '*[~#]' \))

Mi find -foo tal vez no sea lo que podría ser, es muy posible que se pueda omitir directamente en find.


gzip -k opción

gzip 1.6 (junio de 2013) agregó el -k, --keep opción, por lo que ahora puede:

gzip -kr .

y no eliminará sus archivos originales.

Encontrado en:https://unix.stackexchange.com/questions/46786/how-to-tell-gzip-to-keep-original-file


Linux
  1. ¿Obtener una lista de todos los archivos por máscara en la terminal?

  2. Cómo gzip todos o archivos específicos en Linux

  3. Cómo obtener todos los archivos que excedan cierto tamaño y eliminarlos

  4. Encuentra todos los archivos con un nombre que contenga una cadena

  5. Encuentre múltiples archivos y cámbieles el nombre en Linux

Cómo encontrar archivos duplicados en Linux y eliminarlos

Listar todos los archivos de imágenes gráficas con find?

Eliminar archivos coincidentes en todos los subdirectorios

Encuentra todos los archivos de más de un minuto

¿Cómo puedo encontrar todos los archivos vinculados en un sistema de archivos?

Encuentra todos los archivos duplicados por hash MD5