基于CreationTime删除文件

时间:2012-04-16 07:01:01

标签: linux bash unix unix-timestamp

在目录中有每天生成的文件。 如果文件格式于2012年4月16日生成,则为TEST_20120416。

所以我需要删除超过7天的所有文件。我试过这个

#!/bin/ksh
find /data/Test/*.* -mtime -7 -exec rm -rf {} \;
exit 0

现在问题是上面的代码是根据修改时间删除但是根据需求文件应该根据创建时间删除。请帮我根据文件名删除文件(文件名有时间戳)。

2 个答案:

答案 0 :(得分:0)

幸运的是,您有以文件名编码的创建日期,这应该有效:

#!/bin/sh
REFDATE=$(date --date='-7 days' +%Y%m%d)
PREFIX=TEST_
find /data/Test/ -name $PREFIX\* | while read FNAME; do
   if [ ${FNAME#$PREFIX} -lt $REFDATE ]; then
       rm $FNAME
   fi
done

如果您有一些名称以TEST_开头的其他文件,它会打印警告,在这种情况下可能需要更多的过滤。

答案 1 :(得分:-1)

find /data/Test/*.* -ctime -7 -delete

'find / data / Test / '会找到/ data / Test文件夹中的所有文件,参数'-ctime -7'会将搜索限制为创建时间到最后7天和-delete选项将删除此类文件