diff --git a/Archive/Compress to 'tar.zst' (each) b/Archive/Compress to 'tar.zst' (each) new file mode 100755 index 00000000..f4ff225f --- /dev/null +++ b/Archive/Compress to 'tar.zst' (each) @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +# install_keyboard_shortcut=S + +# Source the script 'common-functions.sh'. +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) +ROOT_DIR=$(grep --only-matching "^.*scripts[^/]*" <<<"$SCRIPT_DIR") +source "$ROOT_DIR/common-functions.sh" + +_main() { + local input_files="" + local output_dir="" + + # Execute initial checks. + _check_dependencies "command=tar | command=zstd" + _display_wait_box "2" + input_files=$(_get_files "par_type=all") + output_dir=$(_get_output_dir "par_use_same_dir=true") + + # Execute the function '_main_task' for each file in parallel. + _run_task_parallel "$input_files" "$output_dir" + _display_result_box "$output_dir" +} + +_main_task() { + local input_file=$1 + local output_dir=$2 + local output_file="" + local std_output="" + + # Run the main process. + output_file=$(_get_output_filename "$input_file" "$output_dir" "par_extension_opt=replace; par_extension=tar.zst") + if [[ -d "$input_file" ]]; then + local files="" + cd -- "$input_file" || return 1 + files=$(find . -mindepth 1 -maxdepth 1 | sed "s|^\./||g" | sort --version-sort) + std_output=$(printf "%s" "$files" | xargs --no-run-if-empty tar --zstd -cf "$output_file" --) + else + cd -- "$(_get_filename_dir "$input_file")" || return 1 + local input_file_basename="" + input_file_basename=$(basename -- "$input_file") + std_output=$(tar --zstd -cf "$output_file" -- "$input_file_basename" 2>&1) + fi + _check_output "$?" "$std_output" "$input_file" "$output_file" || return 1 +} + +_main "$@" diff --git a/README.md b/README.md index 7120cd9f..b9acf096 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ While numerous scripts are available for file managers on the web, many suffer f | `E` | Extract Here | | `C` | Compress... | | `G` | Compress to 'tar.gz' (each) | +| `S` | Compress to 'tar.zst' (each) | | `V` | Paste as hard link | | `X` | Compress to 'tar.xz' (each) | | `Z` | Compress to 'zip' (each) |