根据创建时间删除文件
在目录中有每天生成的文件。 2012年4月16日生成的文件格式为TEST_20120416。根据创建时间删除文件
所以我需要删除所有超过7天的文件。我试着这样做
#!/bin/ksh
find /data/Test/*.* -mtime -7 -exec rm -rf {} \;
exit 0
现在的问题是上面的代码是基于修改时间删去,但根据需要文件应该删除基于创作time.Kindly帮我在基于文件名删除文件(文件名有时间戳) 。
正如你幸运已经创建日期在文件名的编码,这应该工作:
#!/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_在这种情况下,可能需要一些更多的过滤名其他一些文件。
find /data/Test/*.* -ctime -7 -delete
'find/data/Test/。'将找到/ data/Test文件夹中的所有文件,参数'-ctime -7'将限制搜索创建时间为最近7天,-delete选项将删除此类文件
'-mtime'过滤器修改时间。一个更合适的选择是'-ctime'。另请参阅此处:http://stackoverflow.com/q/10171069/694576 – alk 2014-04-18 15:21:38
如果您发布一行代码作为答案,至少要用一两句话解释它在做什么。没有人会在他们的机器上执行来自Internet的随机命令。 – 2014-04-22 09:47:18
好吧,我的坏。 find /data/Test/*.*将找到/ data/Test文件夹中的所有文件,参数-ctime -7将搜索创建时间限制为最近7天,-delete选项将删除此类文件 – 2014-04-22 09:53:26
[文件创建时间取决于文件系统上] [1] [1]:http://stackoverflow.com/questions/5929419/how-to-get-file-creation-date-in-linux – tuxuday 2012-04-16 09:42:05
@tuxuday。 ..实际上,那里的大部分文件系统甚至没有记录文件创建时间。许多人天真地将'ctime'解释为“创作时间”,但这并不是什么... – twalberg 2015-01-14 16:50:11