Estou escrevendo um script no qual estou compactando arquivos.
Existe a possibilidade de eu poder compactar um arquivo, criar um arquivo com o mesmo nome e tentar compactá-lo também, por exemplo
$ 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
Ao usar gzip --force
, posso forçar o gzip a sobrescrever foo.gz
, mas nesse caso, acho que há uma boa chance de que eu possa perder dados se sobrescrever foo.gz
. Não parece haver uma opção de linha de comando para forçar o gzip a deixar os .gz
arquivos em paz ... uma versão não interativa de pressionar 'n' no prompt.
Eu tentei gzip --noforce
e gzip --no-force
, esperando que isso seguisse o padrão de opções do GNU, mas nenhum deles funcionou.
Existe uma solução alternativa direta para isso?
Editar:
Acontece que essa é uma das vezes que vale a pena ler a página de informações em vez da página de manual.
Na página de informações:
`--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.
Faltava o texto na página de manual e quando não estava em execução em segundo plano
Quando executado em segundo plano, o gzip não será solicitado e não será substituído, a menos que a -f
opção seja invocada.
find ./ ! -name "*gz" -exec gzip {} \; &
isso funciona:find ./ ! -name "*gz" -print0 | xargs -0 -n 1 -t gzip
relatórios gzip:gzip: ./2012-July.txt.gz already exists; not overwritten