Estou escrevendo um script no qual estou compactando arquivos.
Existe a possibilidade de eu compactar um arquivo, criar um arquivo com o mesmo nome e tentar gzip 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
Usando gzip --force
, posso forçar o gzip a sobrescrever foo.gz
, mas, neste caso, acho que há uma boa chance de perder dados se eu sobrescrever foo.gz
. Não parece haver uma opção de linha de comando para forçar o gzip a deixar apenas .gz
arquivos ... uma versão não interativa de pressionar 'n' no prompt.
Eu tentei gzip --noforce
e gzip --no-force
, esperando que eles pudessem seguir o padrão de opções GNU, mas nenhum deles funcionou.
Existe uma solução 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 man.
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.
A página man faltava o texto e quando não estava sendo executado em segundo plano
Quando executado em segundo plano, o gzip não irá avisar e não irá sobrescrever a menos que a opção -f
seja invocada.