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
 |