编写Linux shell脚本,删除X天之前的文件,但按修改时间保留当天的第一个文件,可以使用以下脚本:
#!/bin/bash
# 指定目标文件夹
target_dir="/path/to/target_directory"
# 指定保留天数
days_to_keep=7
# 获取当前日期
current_date=$(date +%Y%m%d)
# 删除X天之前的文件,但保留当天的第一个文件
find "$target_dir" -type f -mtime +$days_to_keep | sort | while read -r file; do
# 提取文件的修改日期
file_date=$(date -r "$file" +%Y%m%d)
if [[ $file_date != $current_date ]]; then
rm "$file"
fi
done
这个脚本使用find
命令查找目标文件夹中修改时间超过指定天数的文件。然后,通过sort
命令对文件进行排序,确保按修改时间升序排列。最后,通过循环遍历文件列表,如果文件的修改日期不是当前日期,则使用rm
命令删除该文件。
这个脚本可以通过修改target_dir
和days_to_keep
变量来适应不同的需求。target_dir
是目标文件夹的路径,days_to_keep
是保留天数。可以根据实际情况进行调整。
这个脚本可以应用于各种情况,比如清理日志文件、定期清理临时文件等。腾讯云提供的相关产品是云服务器,您可以通过以下链接了解更多信息:
请注意,以上链接是基于腾讯云的相关产品,并不涉及其他云计算品牌商。
领取专属 10元无门槛券
手把手带您无忧上云