如何使用这个脚本
1、创建脚本
cleanup.sh
#!/bin/bash# 默认值
DEFAULT_DIR="/path/to/default/directory"
DEFAULT_DAYS=7# 使用方法提示
usage() {echo "Usage: $0 [-d directory] [-t days]"echo " -d 目标目录 (默认为: ${DEFAULT_DIR})"echo " -t 文件保留天数 (默认为: ${DEFAULT_DAYS} 天)"exit 1
}# 参数解析
while getopts ":d:t:" opt; docase ${opt} ind )TARGET_DIR=$OPTARG;;t )DAYS=$OPTARG;;\? )usage;;: )echo "Error: -${OPTARG} requires an argument."usage;;esac
done# 如果没有提供目标目录或天数,则使用默认值
TARGET_DIR=${TARGET_DIR:-$DEFAULT_DIR}
DAYS=${DAYS:-$DEFAULT_DAYS}# 检查目标目录是否存在
if [ ! -d "${TARGET_DIR}" ]; thenecho "Error: Directory '${TARGET_DIR}' does not exist."exit 1
fi# 执行清理操作
find "${TARGET_DIR}" -type f -mtime +${DAYS} -exec rm -f {} \;echo "Cleaned files older than ${DAYS} days in ${TARGET_DIR}"
2、给这个脚本执行权限
chmod +x cleanup.sh
3、执行使用
默认设置
./cleanup.sh
指定不同的目录和天数:
./cleanup.sh -d /path/to/another/directory -t 3
扩展
getopts 是 Bash 内置的一个命令,因此在标准的 Bash 环境中是默认支持的,无需额外安装。Bash 是大多数 Linux 发行版的默认 shell,所以你可以在几乎所有的 Linux 系统上直接使用 getopts。
验证 getopts 是否可用
你可以通过以下命令来验证 getopts 是否在你的系统上可用:
type getopts
如果 getopts 是可用的,你会看到类似以下的输出:
getopts is a shell builtin