Files
dotfiles/bin/tzp
FlintyLemming 2c149026be add fish config
2025-12-19 16:44:59 +08:00

47 lines
1.4 KiB
Fish
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env fish
set -l arg_count (count $argv)
# 1. 检查是否有输入参数
if test $arg_count -eq 0
echo "用法: zp <文件或目录1> [文件或目录2] ..."
exit 1
end
# 2. 预检:检查是否安装了 pigz
set -l compress_tool ""
if command -v pigz >/dev/null
# 使用 pigz 并指定压缩率 5
set compress_tool "-I 'pigz -5'"
set -l core_count (nproc 2>/dev/null; or echo "多")
echo "⚡ 检测到 pigz将使用 $core_count 核并行压缩 (Level 5)"
else
# 回退到标准 gzip
set compress_tool "-z"
echo "🐢 未检测到 pigz使用标准 gzip 压缩"
end
# 3. 执行压缩逻辑
if test $arg_count -eq 1
# 逻辑 A单个参数生成同名 .tar.gz
# 去掉末尾斜杠以获取干净的名称
set -l name (string trim -r -c / $argv[1])
set -l target "$name.tar.gz"
echo "🚀 正在压缩单项目: $target"
# tar 默认保留软链接(对应 7z 的 -sni -snh 行为)
eval tar $compress_tool -cf "$target" "$argv[1]"
else
# 逻辑 B多个参数生成 package_时间戳.tar.gz
set -l timestamp (date "+%Y%m%d_%H%M%S")
set -l target "package_$timestamp.tar.gz"
echo "🚀 正在将 $arg_count 个项目打包至: $target"
eval tar $compress_tool -cf "$target" $argv
end
if test $status -eq 0
echo "✅ 压缩完成: $target"
else
echo "❌ 压缩过程中出现错误"
end