Search code examples
bashgunzip

How to gunzip without overwriting non-interactively


I want to unzip .gz files but without overwriting. When the resulting file exists, gunzip will ask for permission to overwrite, but I want gunzip not to overwrite by default and just abort. I read in a man that -f force overwriting, but I haven't found nothing about skipping it.

gunzip ${file} 

I need something like -n in copying cp -n ${file}


Solution

  • Granting your files have .gz extensions, you can check if the file exists before running gunzip:

    [[ -e ${file%.gz} ]] || gunzip "${file}"
    

    [[ -e ${file%.gz} ]] removes .gz and checks if a file having its name exists. If not (false), || would run gunzip "${file}".