.zprofile
统计单个目录视频总时长
sh
# === 统计单个目录视频总时长 (函数版) ===
sumvideo() {
# 1. 设定目标目录:如果提供了参数,则使用第一个参数;否则,使用当前目录。
local target_dir="${1:-.}"
# 2. 检查 ffprobe (ffmpeg) 是否已安装
if ! command -v ffprobe >/dev/null 2>&1; then
echo "错误: 未找到 ffprobe 命令,请先安装 ffmpeg。" >&2
return 1
fi
# 3. 使用 find 和 ffprobe 获取所有视频时长的总和(秒)
local total_seconds
total_seconds=$(find "$target_dir" -maxdepth 1 -type f \( \
-iname "*.mp4" -o -iname "*.mkv" -o -iname "*.mov" \
-o -iname "*.avi" -o -iname "*.flv" -o -iname "*.webm" \
-o -iname "*.wmv" -o -iname "*.ts" -o -iname "*.m4v" \
\) -print0 | xargs -0 -I {} ffprobe -v error \
-show_entries format=duration \
-of default=noprint_wrappers=1:nokey=1 "{}" | awk '{s+=$1} END {print s}')
# 4. 检查是否找到了任何视频
if [ -z "$total_seconds" ]; then
echo "在目录 '$target_dir' 中未找到支持的视频文件。"
return 0
fi
# 5. 使用 awk 将总秒数格式化为 时:分:秒 并输出
echo "$total_seconds" | awk -v dir="$target_dir" '{
h=int($1/3600);
m=int(($1%3600)/60);
s=$1%60;
printf "目录 '\''%s'\'' 视频总时长: %02d小时 %02d分 %.0f秒\n", dir, h, m, s
}'
}
Proxy 开关
sh
# 定义 proxy 函数
proxy() {
# 代理服务器地址和端口
local proxy_address="http://127.0.0.1:7890"
# 新增逻辑:检查第二个参数是否为 'silent'
local is_silent=false
if [ "$2" = "silent" ]; then
is_silent=true
fi
case "$1" in
on)
export http_proxy="$proxy_address"
export https_proxy="$proxy_address"
# 只有在非静默模式下才输出信息
if [ "$is_silent" = false ]; then
echo -e "\033[32m✓ Proxy has been turned ON.\033[0m"
echo " http_proxy = $http_proxy"
echo " https_proxy = $https_proxy"
fi
;;
off)
unset http_proxy
unset https_proxy
# 只有在非静默模式下才输出信息
if [ "$is_silent" = false ]; then
echo -e "\033[31m✗ Proxy has been turned OFF.\033[0m"
fi
;;
status|*)
if [ -n "$http_proxy" ] || [ -n "$https_proxy" ]; then
echo "Proxy is currently ON."
[ -n "$http_proxy" ] && echo " http_proxy = $http_proxy"
[ -n "$https_proxy" ] && echo " https_proxy = $https_proxy"
else
echo "Proxy is currently OFF."
fi
echo "Usage: proxy [on|off|status]"
;;
esac
}
# --- 修改此处的调用方式 ---
# 以静默模式 (silent) 自动开启代理,这样就不会有任何输出
proxy on silent
~/.zprofile
sh
# 默认进入工作目录
cd /Users/Work/xxxx
# 添加 Homebrew 环境变量
eval "$(/opt/homebrew/bin/brew shellenv)"
# === 统计单个目录视频总时长 (函数版) ===
sumvideo() {
# 1. 设定目标目录:如果提供了参数,则使用第一个参数;否则,使用当前目录。
local target_dir="${1:-.}"
# 2. 检查 ffprobe (ffmpeg) 是否已安装
if ! command -v ffprobe >/dev/null 2>&1; then
echo "错误: 未找到 ffprobe 命令,请先安装 ffmpeg。" >&2
return 1
fi
# 3. 使用 find 和 ffprobe 获取所有视频时长的总和(秒)
local total_seconds
total_seconds=$(find "$target_dir" -maxdepth 1 -type f \( \
-iname "*.mp4" -o -iname "*.mkv" -o -iname "*.mov" \
-o -iname "*.avi" -o -iname "*.flv" -o -iname "*.webm" \
-o -iname "*.wmv" -o -iname "*.ts" -o -iname "*.m4v" \
\) -print0 | xargs -0 -I {} ffprobe -v error \
-show_entries format=duration \
-of default=noprint_wrappers=1:nokey=1 "{}" | awk '{s+=$1} END {print s}')
# 4. 检查是否找到了任何视频
if [ -z "$total_seconds" ]; then
echo "在目录 '$target_dir' 中未找到支持的视频文件。"
return 0
fi
# 5. 使用 awk 将总秒数格式化为 时:分:秒 并输出
echo "$total_seconds" | awk -v dir="$target_dir" '{
h=int($1/3600);
m=int(($1%3600)/60);
s=$1%60;
printf "目录 '\''%s'\'' 视频总时长: %02d小时 %02d分 %.0f秒\n", dir, h, m, s
}'
}
# 定义 proxy 函数
proxy() {
# 代理服务器地址和端口
local proxy_address="http://127.0.0.1:7890"
# 新增逻辑:检查第二个参数是否为 'silent'
local is_silent=false
if [ "$2" = "silent" ]; then
is_silent=true
fi
case "$1" in
on)
export http_proxy="$proxy_address"
export https_proxy="$proxy_address"
# 只有在非静默模式下才输出信息
if [ "$is_silent" = false ]; then
echo -e "\033[32m✓ Proxy has been turned ON.\033[0m"
echo " http_proxy = $http_proxy"
echo " https_proxy = $https_proxy"
fi
;;
off)
unset http_proxy
unset https_proxy
# 只有在非静默模式下才输出信息
if [ "$is_silent" = false ]; then
echo -e "\033[31m✗ Proxy has been turned OFF.\033[0m"
fi
;;
status|*)
if [ -n "$http_proxy" ] || [ -n "$https_proxy" ]; then
echo "Proxy is currently ON."
[ -n "$http_proxy" ] && echo " http_proxy = $http_proxy"
[ -n "$https_proxy" ] && echo " https_proxy = $https_proxy"
else
echo "Proxy is currently OFF."
fi
echo "Usage: proxy [on|off|status]"
;;
esac
}
# --- 修改此处的调用方式 ---
# 以静默模式 (silent) 自动开启代理,这样就不会有任何输出
proxy on silent