I'm using wget to download all files from within a folder using the -r and -np options. However this also downloads the preceding folders, which I don't want.

For example:

wget -r -np ftp://user:pass@352.525.255.54/articles/artist/images/

this downloads all files from within "images" (which is good) but then also downloads the folders articles, artist and images (which is bad). What option fixes this?

  • 2
    (Off topic, not really about programming or software development, voting to move to SuperUser.) – Bruno Feb 10 '12 at 23:13
  • @Bruno - Agreed – zellio Feb 10 '12 at 23:18
  • it is about software development - im writing an aspect FTP transfers within a piece of software – Dan Feb 11 '12 at 8:50

The --no-parent-Option is what you are looking for.

  • 4
    The asker already knows about --no-parent — he used the short version -np in the example command. It's more likely that he's looking for the --cut-dirs option, as in Robert Casey's answer. – waldyrious Oct 4 '17 at 13:53

I think what you are looking for is the --cut-dirs option. Used in conjunction with the -nH (no hostname) option, you can specify exactly which level of directory you want to appear in your local output. As an example, I have a .pkg download that I want to write to my local directory, and I don't want all of the parent tree to be included, just the subdirectories. In this case, my starting point to just get the .pkg name as the parent directory is 5 levels down:

wget -np -nH --cut-dirs 5 -r http://www.myhost.org/pub/downloads/My_Drivers/OS_10_5_x/Letter_Format/driver_C123_105.pkg

What you will see, then, is the name driver_C123_105.pkg in your current directory.

% ls -lt | head
drwxr-xr-x   12 rob  rob        408 Feb 22 12:54 driver_C123_105.pkg
-rw-------@   1 rob  rob          0 Feb 16 15:59 1kPSXcUj.pdf.part
-rw-------@   1 rob  rob        842 Feb  3 14:47 WcUuL69s.jnlp.part


% find driver_C123_105.pkg


You can direct this output to go elsewhere with the -P option.

  • -nH refers to --no-host-directories – Rodrirokr May 3 at 20:39
  • This is exactly it! in my case, was downloading busybox binaries from their page. wget --no-parent --no-host-directories --cut-dirs 3 -r https://busybox.net/downloads/binaries/1.30.0-i686/to get everything inside the 1.30.0-i686 directory. – Rodrirokr May 3 at 21:28

You might looking for this:

wget -r -np -nd ftp://user:pass@352.525.255.54/articles/artist/images/

The -nd switch is a short for --no-directories.

  • Stack Overflow, still quicker than reading manuals... thanks for your answer, exactly what I need :) – nicolas Apr 13 '17 at 14:22
  • 2
    Note that with the -nd option, the entire directory structure will be discarded — so even if there are subdirectories below the one you're downloading, they won't be created, and all files will get saved to the root download directory. – waldyrious Oct 4 '17 at 13:58

From man wget:

       Do not ever ascend to the parent directory when retrieving
       recursively.  This is a useful option, since it guarantees that
       only the files below a certain hierarchy will be downloaded.
  • I can't get this to work. does it work for ftp too? – Dan Feb 10 '12 at 23:17
  • Not sure why it would go up the hierarchy at all with FTP, since it doesn't make sense to follow links there. Try perhaps with --mirror, or with a different FTP client (lftp, ncftp, ...) – Bruno Feb 10 '12 at 23:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy