56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			56 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
 |