52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 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
 |