gpt4 book ai didi

linux - 根据文件名作为日期删除所有超过 30 天的文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:59 26 4
gpt4 key购买 nike

我是 bash 的新手,我的任务是删除所有超过 30 天的文件,我可以根据文件名 Y_M_D.ext 2019_04_30.txt.

我知道我可以在包含文件的文件夹中使用 ls 列出所有文件。我知道我可以使用 $ date 获取今天的日期,并且可以将其配置为匹配文件格式 $ date "+%Y_%m_%d"

我知道我可以使用 rm 删除文件。

我如何将所有这些结合到一个 bash 脚本中,以删除从今天起超过 30 天的文件?

在伪 python 代码中,我猜它看起来像:

for file in folder:
if file.name to date > 30 day from now:
delete file

最佳答案

我绝不是系统管理员,但您可以按照以下行考虑一个简单的 shell 脚本:

# Generate the date in the proper format
discriminant=$(date -d "30 days ago" "+%Y_%m_%d")

# Find files based on the filename pattern and test against the date.
find . -type f -maxdepth 1 -name "*_*_*.txt" -printf "%P\n" |
while IFS= read -r FILE; do
if [ "${discriminant}" ">" "${FILE%.*}" ]; then
echo "${FILE}";
fi
done

请注意,这可能会被专业人士视为“外行”解决方案。也许 awk 可以更好地处理这个问题,不幸的是我不习惯使用它。

关于linux - 根据文件名作为日期删除所有超过 30 天的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55919214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com