Saya sedang menulis skrip tempat saya melakukan gzipping file.
Ada kemungkinan saya dapat zip file, membuat file dengan nama yang sama, dan mencoba untuk gzip ini juga, misalnya
$ 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
Dengan menggunakan gzip --force
, saya bisa memaksa gzip untuk menimpa foo.gz
, tetapi dalam kasus ini, saya berpikir bahwa ada peluang bagus bahwa saya mungkin kehilangan data jika saya menimpa foo.gz
. Tampaknya tidak ada saklar baris perintah untuk memaksa gzip meninggalkan .gz
file sendirian ... versi non-interaktif dari menekan 'n' saat diminta.
Saya mencoba gzip --noforce
dan gzip --no-force
, berharap ini bisa mengikuti standar opsi GNU, tetapi tidak ada yang berhasil.
Apakah ada penyelesaian langsung untuk ini?
Edit:
Ternyata inilah saatnya membayar halaman informasi daripada halaman manual.
Dari halaman info:
`--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.
Halaman manual tidak ada teks dan saat tidak berjalan di latar belakang
Saat berjalan di latar belakang, gzip tidak akan meminta, dan tidak akan menimpa kecuali -f
opsi dipanggil.
sumber
find ./ ! -name "*gz" -exec gzip {} \; &
ini bekerja:find ./ ! -name "*gz" -print0 | xargs -0 -n 1 -t gzip
laporan gzip:gzip: ./2012-July.txt.gz already exists; not overwritten
Jawaban:
Saya sadar bahwa cara terbaik untuk menghindari efek yang tidak diinginkan adalah dengan tidak meminta program untuk melakukan efek yang tidak diinginkan. Artinya, jangan katakan itu untuk mengompres file jika file tersebut sudah ada dalam bentuk terkompresi.
misalnya:
atau lebih pendek (jalankan
true
jika ada file.gz, kompres file lain)sumber
poke a file
.Hal terdekat yang dapat saya temukan untuk satu perintah adalah sebagai berikut:
The
yes
cetakan perintahy
diikuti dengan linefeed untuk stdout sampai menerima sinyal. Jika ada argumen, itu akan mencetak itu alih-alihy
. Dalam hal ini, ia mencetakn
sampai gzip keluar, sehingga menutup pipa.Ini setara dengan memasukkan
n
berulang kali pada keyboard; ini akan secara otomatis menjawab pertanyaangzip: archive/foo.gz already exists; do you wish to overwrite (y or n)?
Saya umum, saya pikir lebih baik tidak mencoba untuk mengompres file jika file gzipped yang sesuai ada; solusi saya lebih berisik, tetapi cocok dengan kebutuhan khusus saya untuk penggantian drop-in untuk
gzip
perintah, duduk di file konfigurasi.sumber
gzip
keluar2