| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- #!/bin/bash
 
- # a command line utility intended to simplify bulk decompression
 
- # by automating a pool sized by the processor of parallel operations
 
- # each of which creates a folder, decompresses, and if successful
 
- # removes the compressed file, finally checking each directory and
 
- # pulling out single items to avoid redundant parent directories.
 
- # execute extraction
 
- extract_locally() {
 
- 	local extension="${1##*.}"
 
- 	[ -d "$1" ] && return # skip/ignore directories
 
- 	! [[ "$extension" =~ (7z|zip|rar) ]] && return # ignore unsupported types
 
- 	# handle each case independently
 
- 	local name="${1%.*}"
 
- 	mkdir -p "$name"
 
- 	case "$extension" in
 
- 		zip)
 
- 			if ! unzip -o "$1" -d "$name"; then
 
- 				return
 
- 			fi
 
- 			;;
 
- 		rar)
 
- 			if ! unrar x -o+ -idp "$1" "$name"; then
 
- 				return
 
- 			fi
 
- 			;;
 
- 		7z)
 
- 			if ! 7za x -aoa -bd "$1" -o"$name"; then
 
- 				return
 
- 			fi
 
- 			;;
 
- 	esac
 
- 	# cleanup
 
- 	rm "$1"
 
- 	# @todo: fix redundant parent folders
 
- 	if [ $(find "$name" -mindepth 1 -maxdepth 1 | wc -l) -eq 1 ]; then
 
- 		mv "$name" "${name}.tmp"
 
- 		mv "${name}.tmp"/* .
 
- 		rmdir "${name}.tmp"
 
- 	fi
 
- }
 
- # capture all files in directory
 
- shopt -s nullglob
 
- export files=(*)
 
- # execute up to nproc parallel extractions
 
- for file in "${files[@]}"; do
 
- 	while ! [ $(jobs -p | wc -l) -lt $(nproc) ]; do sleep 1; done # this should wait for available threads
 
- 	extract_locally "$file" &
 
- done
 
- # notify the process is complete
 
- wait
 
- echo "done"
 
 
  |