Sto scrivendo uno script in cui sto comprimendo i file.
C'è la possibilità che io possa comprimere un file, creare un file con lo stesso nome e provare anche a decomprimerlo, ad es.
$ 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 forzare gzip a sovrascrivere foo.gz, ma in questo caso, penso che ci siano buone probabilità che potrei perdere dati se sovrascrivo foo.gz. Non sembra esserci un interruttore da riga di comando per forzare gzip a lasciare i .gzfile da solo ... una versione non interattiva di premere 'n' al prompt.
Ho provato gzip --noforcee gzip --no-force, sperando che questi potessero seguire lo standard delle opzioni GNU, ma nessuno dei due ha funzionato.
C'è una soluzione semplice per questo?
Modificare:
Si scopre che questa è una delle volte che paga leggere la pagina di informazioni piuttosto che la pagina di manuale.
Dalla pagina delle informazioni:
`--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.
Nella pagina man mancava il testo e quando non era in esecuzione in background
Quando viene eseguito in background, gzip non verrà richiesto e non verrà sovrascritto a meno che non venga -finvocata l' opzione.
find ./ ! -name "*gz" -exec gzip {} \; &questo funziona:find ./ ! -name "*gz" -print0 | xargs -0 -n 1 -t gzipgzip riporta:gzip: ./2012-July.txt.gz already exists; not overwritten