在不使用 find unix 的情况下循环删除早于 x 天的文件

Remove files older than x days in a loop without using find unix

我试图循环删除早于 x 天的文件,而不必找到它们。 我正在使用此脚本删除所有这些:

for f in /path/tomy/directory/*.rpt
do
   # if file, delete it
   [ -f "$f" ] && rm "$f"
done

如何将 Mtime 合并到此

您可以创建一个时间戳为 X 天前的临时文件,然后在 for 循环中将每个文件的时间戳与该文件进行比较,以决定是否删除它。

n=60 # number of days
ref="/tmp/$$.tmp" # temporary filename

touch -t $(date -d "-$n days" '+%Y%m%d%H%M.%S') "$ref"

for f in /path/tomy/directory/*.rpt; do
   [[ -f $f && $ref -nt $f ]] && echo rm "$f"
done

rm "$ref"

一旦您对输出感到满意,请删除 rm 之前的 echo