Estoy escribiendo un script en el que estoy comprimiendo archivos.
Existe la posibilidad de que pueda comprimir un archivo, crear un archivo con el mismo nombre e intentar comprimir esto también, p. Ej.
$ ls -l archive/
total 4
-rw-r--r-- 1 xyzzy xyzzy 0 Apr 16 11:29 foo
-rw-r--r-- 1 xyzzy xyzzy 24 Apr 16 11:29 foo.gz
$ gzip archive/foo
gzip: archive/foo.gz already exists; do you wish to overwrite (y or n)? n
not overwritten
Al usar gzip --force
, puedo forzar a gzip a sobrescribir foo.gz
, pero en este caso, creo que hay una buena posibilidad de que pueda perder datos si sobrescribo foo.gz
. No parece haber un cambio de línea de comando para forzar a gzip a dejar los .gz
archivos solos ... una versión no interactiva de presionar 'n' en el indicador.
Lo intenté gzip --noforce
y gzip --no-force
, con la esperanza de que estos pudieran seguir el estándar de opciones de GNU, pero ninguno de estos funcionó.
¿Existe una solución directa para esto?
Editar:
Resulta que esta es una de las veces que vale la pena leer la página de información en lugar de la página de manual.
Desde la página de información:
`--force'
`-f'
Force compression or decompression even if the file has multiple
links or the corresponding file already exists, or if the
compressed data is read from or written to a terminal. If the
input data is not in a format recognized by `gzip', and if the
option `--stdout' is also given, copy the input data without
change to the standard output: let `zcat' behave as `cat'. If
`-f' is not given, and when not running in the background, `gzip'
prompts to verify whether an existing file should be overwritten.
En la página del manual faltaba el texto y cuando no se ejecutaba en segundo plano.
Cuando se ejecuta en segundo plano, gzip no aparecerá y no se sobrescribirá a menos que -f
se invoque la opción.
find ./ ! -name "*gz" -exec gzip {} \; &
esto funciona:find ./ ! -name "*gz" -print0 | xargs -0 -n 1 -t gzip
informes de gzip:gzip: ./2012-July.txt.gz already exists; not overwritten