I have a zip archive. The unzip -l myarchive.zip command gives this listing:


The root folders are top/subtop for all files. How to extract those files without the two top/subtop folders?

E.g. when I am in /home/myuser/public_html directory, files/1.txt and files2/2.txt shoud be extracted directly to that directory.

I tried unzip myarchive.zip top/subtop/* but it created top/subtop directories anyway.


Unfortunately, you can't. Your only real option is to just move them after they are extracted.

  • Hmm, good to know. I asked this because a few days ago, when creating an archive, it was adding some paths from above, unintentionally. So there was a problem unzipping them because of the additional top paths. However, I can't repeat this today - today it's working ok, i.e. when in top/subtop directory and doing zip -r files.zip * it does not add the top/subtop path as prefix to files path. I think I do exactly the same command, but strangely, results are different, so it is not necessary to strip top directories when unzipping. – camcam Jul 5 '12 at 6:12
  • Note that it is possible to ignore all directories (simply placing all the files next to each other) with unzip -j. – Skylar Ittner May 11 '19 at 1:32

You might want to try the tar command, which has a --strip-components feature and can operate on zip files.

  • 2
    Does not work with tar (GNU tar) 1.15.1: tar: This does not look like a tar archive tar: Error exit delayed from previous errors – Kevin Panko Jan 6 '14 at 22:05
  • 2
    FreeBSD's tar can handle ZIP-archives. Other tar-implementations aren't as full-featured, unfortunately. – Mikhail T. Apr 25 '14 at 20:30
  • 2
    For debian users, FreeBSD's tar is available as bsdtar (apt-get install bsdtar) if you want to use tar to extract zip files. – Niklas B May 9 '17 at 19:55
$ unzip myarchive.zip
$ mv top/subtop/* .
  • It's too simple. You didn't extract the files with unzip – smac89 Jun 4 '20 at 4:59

I used this command to copy all files to my root file directory after Extracting All zipped files, it worked great. Huge time saver:

for /r %f in (00P*) do @copy "%f" 


  • 8
    You do realize this is a DOS command, and has nothing to do with a Linux command line, right? – MestreLion Aug 31 '15 at 11:11

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.