Working with compressed files: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 8: | Line 8: | ||
<source lang="bash"> | <source lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
# based on zless | # based on zless | ||
Line 27: | Line 13: | ||
PATH=${GZIP_BINDIR-'/bin'}:$PATH | PATH=${GZIP_BINDIR-'/bin'}:$PATH | ||
version="ztail 0.1 | version="ztail 0.1" | ||
usage="Usage: $0 [OPTIONS]... [FILES]... | usage="Usage: $0 [OPTIONS]... [FILES]... |
Revision as of 16:08, 11 December 2011
Linux usually provides a couple of command piping gzip
zgrep, zcat, zdiff, zless, zmore, zegrep,...
Here is a simple extension of tail and head for zipped files, that you can call ztail and zhead (example is for tail, replace "tail" with "head" everywhere to get zhead) and add to your own /bin directory:
Caution:
very basic version, works when the options starts with '-' so it works with '-n10' but fails with '-n 10'. Should be easily improved...
<source lang="bash">
- !/bin/bash
- based on zless
PATH=${GZIP_BINDIR-'/bin'}:$PATH
version="ztail 0.1"
usage="Usage: $0 [OPTIONS]... [FILES]...
Same as the 'tail' command, but operate on the uncompressed contents of any compressed FILEs. Options are the same as for 'tail'."
case $1 in --help) exec echo "$usage";; -h) exec echo "$usage";; --version) exec echo "$version";; esac
options="" count=0 for i in $@; do str="$i" if test -f $i && [ ${str:(-3)} = ".gz" ]; then
files[++count]=$str
else
if [ ${str:0:1} = "-" ] && [ $str != "-v" ] && [ $str != "--verbose" ]; then
options=$options"$i "
elif [ $str != "-v" ] && [ $str != "--verbose" ]; then echo -ne "***Warning: $i is neither a regular zip file or a regular option***\n\n" fi
fi done
if [ $count -gt 0 ]; then
if [ $count -eq 1 ]; then exec gzip -cd ${files[1]} | tail $options else for j in `seq 1 $count`; do echo "==>"${files[j]}"<==" exec gzip -cd ${files[j]} | tail $options done fi
else
echo -ne "***Warning: no regular zip files given***\n\n" exec echo "$usage"
fi </source>