gpt4 book ai didi

linux - 删除日期字符串早于 X 天的 yyyy-MM-dd 文件夹

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:17 26 4
gpt4 key购买 nike

我有一个目录,其中包含一堆名为 yyyy-MM-dd 的文件夹格式。我想删除 yyyy-MM-dd 所在的所有文件夹字符串早于 X 天。

# ls
2018-01-01
2018-01-02
2018-01-03
...
2018-02-01
2018-03-05
...
2019-01-02
2019-01-02

这样可以找到吗?

更新:

此问题与 Delete files older than specific date in linux 不重复因为那谈到通过 mtime 查找文件我想通过文件名查找文件名与日期字符串匹配的位置。例如,目录的名称可以是 2012-01-01但这是mtime可能是2018-03-11 。这就是为什么mtime或任何其他日期/时间元数据都无法满足我的需求。

最佳答案

您可以通过以下方式获取自 UNIX 纪元以来的当前日期(以天为单位)

echo $(($(date +%s)/86400))

您可以对与上面相同的格式化字符串执行相同的操作:

echo $(($(date +%s --date "2018-01-01"))/86400)

然后是“今天”与任意日期之间的天数:

echo $(($(date +%s)/86400 - $(date +%s --date "2018-01-01")/86400))

将其包裹在一个循环中,您应该可以开始了:

for DIR in `ls -1`
do
# if the directory name is parseable as a date...
if date "$DIR" &>/dev/null
then
age=$(($(date +%s)/86400 - $(date +%s --date "$DIR")/86400))
echo "$DIR is $age days old"
# do something based on its age
if [ $age -gt 30 ]
then
#rm -fr "$DIR"
echo $DIR
fi
fi
done

关于linux - 删除日期字符串早于 X 天的 yyyy-MM-dd 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54121486/

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