52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# Lists the contents of archives.
 | 
						|
#
 | 
						|
# Adapted from a script by Sorin Ionescu <sorin.ionescu@gmail.com>
 | 
						|
 | 
						|
if (($# == 0)); then
 | 
						|
  cat >&2 <<EOF
 | 
						|
usage: $0 [-option] [file ...]
 | 
						|
 | 
						|
options:
 | 
						|
    -v, --verbose    verbose archive listing
 | 
						|
 | 
						|
Report bugs to <sorin.ionescu@gmail.com>.
 | 
						|
EOF
 | 
						|
fi
 | 
						|
 | 
						|
if [[ $1 = -v || $1 = --verbose ]]; then
 | 
						|
    verbose=0
 | 
						|
    shift
 | 
						|
fi
 | 
						|
 | 
						|
while (($# > 0)); do
 | 
						|
    if [[ ! -s $1 ]]; then
 | 
						|
        >&2 echo "$0: file not valid: $1"
 | 
						|
        shift
 | 
						|
        continue
 | 
						|
    fi
 | 
						|
 | 
						|
    case ${1:l} in
 | 
						|
        *.tar.gz|*.tgz) tar t${verbose:+v}vzf "$1" ;;
 | 
						|
        *.tar.bz2|*.tbz|*.tbz2) tar t${verbose:+v}jf "$1" ;;
 | 
						|
        *.tar.xz|*.txz) tar --xz --help &> /dev/null \
 | 
						|
            && tar --xz -t${verbose:+v}f "$1" \
 | 
						|
            || xzcat "$1" | tar t${verbose:+v}f - ;;
 | 
						|
        *.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
 | 
						|
            && tar --lzma -t${verbose:+v}f "$1" \
 | 
						|
            || lzcat "$1" | tar x${verbose:+v}f - ;;
 | 
						|
        *.tar) tar t${verbose:+v}f "$1" ;;
 | 
						|
        *.zip) unzip -l${verbose:+v} "$1" ;;
 | 
						|
        *.rar) unrar &> /dev/null \
 | 
						|
            && unrar ${${verbose:+v}:-l} "$1" \
 | 
						|
            || rar ${${verbose:+v}:-l} "$1" ;;
 | 
						|
        *.7z) 7za l "$1" ;;
 | 
						|
        *) >&2 echo "$0: cannot list: $1"
 | 
						|
            success=1
 | 
						|
            ;;
 | 
						|
    esac
 | 
						|
 | 
						|
    shift
 | 
						|
done
 |