Explicit destination paths keep wget jobs predictable when the downloaded file feeds another script, release process, or backup workflow. Choosing the output location up front is the difference between a repeatable transfer and a file that lands wherever the current shell happened to be.

GNU wget offers two main controls for this job. --output-document or -O writes the response body to one exact local path, while --directory-prefix or -P changes the destination directory and keeps the filename that wget would normally choose from the URL or the response headers.

The overwrite policy matters as much as the path itself. -O writes directly to the named file and can replace earlier data, while a broad destination directory can hide artifacts from later cleanup or verification, so prefer dedicated directories, explicit filenames, and a final path check before another tool consumes the result.

Steps to save wget downloads to a specific file or directory:

  1. Write the response body directly to one exact local file with -O.
    $ wget --output-document=finance-ledger-export-current.csv.gz https://downloads.example.net/exports/2026-03/finance-ledger-export-2026-03-28.csv.gz
    --2026-03-28 14:33:06--  https://downloads.example.net/exports/2026-03/finance-ledger-export-2026-03-28.csv.gz
    Connecting to downloads.example.net (downloads.example.net)|203.0.113.50|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 65536 (64K) [application/gzip]
    Saving to: 'finance-ledger-export-current.csv.gz'
    
    ##### snipped #####
    2026-03-28 14:33:06 (58.1 MB/s) - 'finance-ledger-export-current.csv.gz' saved [65536/65536]

    Use an explicit filename or path with -O so a later directory change in the same script does not move the file unexpectedly.

  2. Keep the remote filename but force a specific destination directory with -P.
    $ mkdir -p "$HOME/downloads/exports"
    $ wget --directory-prefix="$HOME/downloads/exports" \
      https://downloads.example.net/exports/2026-03/finance-ledger-summary-2026-03-28.json
    --2026-03-28 14:33:06--  https://downloads.example.net/exports/2026-03/finance-ledger-summary-2026-03-28.json
    Connecting to downloads.example.net (downloads.example.net)|203.0.113.50|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 98304 (96K) [application/json]
    Saving to: '/home/user/downloads/exports/finance-ledger-summary-2026-03-28.json'
    
    ##### snipped #####
    2026-03-28 14:33:06 (575 MB/s) - '/home/user/downloads/exports/finance-ledger-summary-2026-03-28.json' saved [98304/98304]

    --directory-prefix is the safer choice when the remote filename is meaningful and only the parent folder needs to be controlled.

  3. Choose a fixed local filename when downstream tooling expects one stable path.
    $ wget --output-document="$HOME/downloads/exports/daily-settlement-latest.csv" \
      https://downloads.example.net/exports/2026-03/daily-settlement-2026-03-28.csv

    -O writes to the named path directly, so shared filenames should be used only when the replacement is intentional.

  4. Verify the resulting paths before handing them to another script or archive job.
    $ ls -lh finance-ledger-export-current.csv.gz "$HOME/downloads/exports"
    -rw-r--r-- 1 user user  64K Mar 28 14:33 finance-ledger-export-current.csv.gz
    
    /home/user/downloads/exports:
    total 100K
    -rw-r--r-- 1 user user 1.2K Mar 28 14:33 daily-settlement-latest.csv
    -rw-r--r-- 1 user user  96K Mar 28 14:33 finance-ledger-summary-2026-03-28.json

    Non-zero file size at the expected location is the minimum confirmation that the chosen output option behaved as intended.