# linux 清理指定目录下,指定时间的历史文件
如何使用这个脚本
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; do
case ${opt} in
d )
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}" ]; then
echo "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