I’ve been working with lots of
zip files lately – site backups mostly. Often times this is because of some error message referring to a file contained within the archive.
zip is quite large, having to extract gigabytes of information just to view the contents of one file is annoying. Because of this I came across this StackExchange link with a few options to extract just one file.
The are the two main ways I’ve been using, but there are others!
Extract the thing, right here!
The typical way which makes sense in most use cases is this:
unzip -d . site-backup.zip backup.sql
This is basically saying is:
site-backkup.ziparchive, extract the
backup.sqlfile right here (
This is great, and for the most part does what we need it to do.
What About a Deeply Nested File?
The previous example is good, but what if I have a file that is deeply nested, something like:
Depending on what I think might be going on, I might just want to take a quick peek. If I used the previous technique, all of those folders would be created and would require me to traverse down to the file before opening. Not too bad, but still a little annoying.
Instead, I can extract that file to
stdout and then redirect the output to a file in the current directory. Using the above
baz.php file as an example, this would look like:
unzip -p site-backup.zip wp-content/plugins/random-plugin/inc/foo/bar/baz.php > baz.php
Two main downsides:
- If it’s code, you’ll likely need to other files unless it’s a really trivial issue
- The fileperms aren’t preseverved