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 .gz
file da solo ... una versione non interattiva di premere 'n' al prompt.
Ho provato gzip --noforce
e 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 -f
invocata l' opzione.
find ./ ! -name "*gz" -exec gzip {} \; &
questo funziona:find ./ ! -name "*gz" -print0 | xargs -0 -n 1 -t gzip
gzip riporta:gzip: ./2012-July.txt.gz already exists; not overwritten