0

To get the content of a zipped file, you can do unzip -p archive.zip file1.txt | less as said here

However, for that is for the case where you are "positioned" in the path where your .zip is. If you are not (for the case the command being executed in a shell script for example), I guess I would need to pass in the absolute paths for the .zip and the file, but a filename not matched: error is thrown.

For a .zip in the home directory I tried this commands:

unzip -p ~/archive.zip ~/archive.zip/file1.txt | less
unzip -p ~/archive.zip ~/archive/file1.txt | less

but I get the filename not matched: error.

How can I get the content of a txt file, without unzipping using absolute paths? (meaning not having to be in the specific directory of the .zip to run the command or to be able to perform that task form other path or a shell script)

  • The second argument referencing file1.txt as if from your home directory (with `~/`) is incorrect. Try `unzip -l ~/archive.zip` to see the exact path of file1.txt within the zipfile, not in the file system. I.e., probably just `unzip -p ~/archive.zip file1.txt | less` (though it could be `subdir/file1.txt`) – Joshua Goldberg Mar 08 '23 at 22:55

1 Answers1

1

The -p flag extracts files to pipe insted of unzipping into actual files. You don't need to use any additional path. Use this:

unzip -p ~/archive.zip file1.txt | less

I tested it in Centos 8:

enter image description here

Kar.ma
  • 1,069
  • 1
  • 7
  • 11
  • Thanks for your answer. I do still get the error. I also tried hardcoding the path, changing `~/archive.zip` to `/home/pi/archive.zip`. same result. In case it makes any diffrence this is a raspberrypi OS – rustyBucketBay Sep 22 '21 at 08:22
  • seems that this does the job `unzip -p /home/pi/archive.zip '*/file1.txt'` – rustyBucketBay Sep 22 '21 at 13:44
  • It's weird, maybe some different implementation of the unzip command? – Kar.ma Sep 23 '21 at 09:55