
Do you train Kung Fu?
Or know someone who does?
Then check out KungFuPeople.com
Mobile version of this pageZope in DevelopmentMode
Next:
Porting IssueTrackerProduct to Zope 2.8.0
Related blogs
SmartDict - a smart 'dict' wrapperlogrotating all my Zope event logs
Optimize Plone.org with slimmer.py
Gzip and Slimmer optimization anecdote
YSlow grade A (96) but not with doubts
DoneCal gets a grade A (92)
Comparing Google Closure with UglifyJS
Read in passwords with bash
type - Writing shell scripts
Catching a carriage return in bash
File check before delete
pwdf - a mix of ls and pwd
Bash tip of the day: ff
The importance of env (and how it works with virtualenv)
Related by category

ztar - my wrapper on tar -z
29th of June 2005
Something I find myself doing very often is to download a .tar.gz or .tgz file that I want to unpack, but only in a subfolder. Some rather annoying gzips aren't collected in one folder so that when you unpack it lots of files are created in the current directory. Do you find yourself often doing this:
$ tar -ztvf Some-0.x.tar.gz Some/file1.txt Some/file2.txt ... Some/file100.txt $ tar -zxvf Some-0.x.tar.gz Some/file1.txt Some/file2.txt ... Some/file100.txt
Or, in case they the gzip is badly organised:
$ tar -ztvf Foo-0.y.tar.gz file1.txt file2.txt ... file100.txt $ mkdir Foo; mv Foo-0.y.tar.gz Foo/; cd Foo/ $ tar -zxvf Foo-0.y.tar.gz file1.txt file2.txt ... file100.txt $ cd ..
If you feel that this is too much typing, consider my little (python) script so that you can do this:
$ ztar Some-0.x.tar.gz Some/file1.txt Some/file2.txt ... Some/file100.txt $ ztar Foo-0.y.tar.gz Not tarred in one single folder. Create a new one? Folder: Foo Foo/file1.txt Foo/file2.txt ... Foo/file100.txt
The ztar program is a little Python script that wraps up all of these alternatives and options into one little program. Drawback: you get used to it and all of a sudden it's not there because it's not part of the the standard bash utils.
To make this happen on your Linux system, download the file and make it executable. Stick it in your global or local bin directory and enjoy. Remember, this is not rocket science and it welcomes feedback.
Comment
atool does this too, incidentally:
http://www.student.lu.se/~nbi98oli/atool.html
An interesting way for me to learn. Instead of searching for the existing solution I dabble on one and then people help me find the existing solution. Thank you Ian.
$ (mkdir foo; cd foo; tar xovf ../foo-xyz.tgz)
The parens means run all commands in the same shell child process - this makes the "cd" stick for the subsequent "tar".
The shell is for scripting too.
that only applies if you know that you want to put it in folder.
Another old "copy a directory across filesystems without creating temporary files" trick, back when not everything is under / in a single filesystem...
$ tar cf - this-dir | (cd that-dir; tar xf -)


Great idea. Why didn't I think of that?