मैं एक स्क्रिप्ट लिख रहा हूं जिसमें मैं फाइलों को जिप्पी कर रहा हूं।
एक संभावना है कि मैं एक फ़ाइल को ज़िप कर सकता हूं, उसी नाम की एक फ़ाइल बना सकता हूं, और इसे भी जिप करने का प्रयास कर सकता हूं, जैसे;
$ 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
का उपयोग करके gzip --force
, मैं gzip को अधिलेखित करने के लिए बाध्य कर सकता हूं foo.gz
, लेकिन इस मामले में, मुझे लगता है कि अगर मैं अधिलेखित हो जाता हूं तो एक अच्छा मौका है कि मैं डेटा खो सकता हूं foo.gz
। वहाँ एक कमांड लाइन स्विच करने के लिए .gz
अकेले फ़ाइलों को छोड़ने के लिए मजबूर करने के लिए मजबूर नहीं लगता ... प्रॉम्प्ट पर 'n' दबाने का एक गैर-संवादात्मक संस्करण।
मैंने कोशिश की gzip --noforce
और gzip --no-force
उम्मीद है कि ये GNU विकल्प मानक का पालन कर सकते हैं, लेकिन इनमें से किसी ने भी काम नहीं किया।
क्या इसके लिए सीधे आगे का काम है?
संपादित करें:
यह पता चला है कि यह एक बार है कि यह मैन पेज के बजाय सूचना पृष्ठ को पढ़ने के लिए भुगतान करता है।
जानकारी पृष्ठ से:
`--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.
मैन पेज पाठ याद आ रहा था और जब पृष्ठभूमि में नहीं चल रहा था
जब पृष्ठभूमि में चल रहा है, तो gzip संकेत नहीं देगा, और जब तक कि -f
विकल्प को लागू नहीं किया जाता है तब तक इसे अधिलेखित नहीं किया जाएगा।
find ./ ! -name "*gz" -exec gzip {} \; &
यह काम करता है:find ./ ! -name "*gz" -print0 | xargs -0 -n 1 -t gzip
gzip रिपोर्ट:gzip: ./2012-July.txt.gz already exists; not overwritten