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.
When the 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:
Within the
site-backkup.zip
archive, extract thebackup.sql
file 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:
wp-content/plugins/random-plugin/inc/foo/bar/baz.php
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