我正在尝试在/home/
目录下找到最旧日志文件的日期至少10天。
find /home -type f –name "*.log" –mtime +10 -ls | sort | head - n 1 >>/home/text.txt
我使用+10,因为我需要在10天后找到日期。
startDate = cut –d '_' –f20,22 text.txt to get the date.
但是此代码无法正常工作。有什么建议吗?
答案 0 :(得分:1)
您可以尝试下一个:
oldest=$(stat -f "%m%t%Sm %N" /home/**/*.log | sort -n | head -1 | cut -f2)
或
oldest10=$(find /home/ -type f –name “*.log” –mtime +10 -print0 | xargs -0 stat -f "%m%t%Sm" | sort -n | head -1 | cut -f2)
说明:
find
找到正确的文件stat
以“秒TAB日期”sort
按秒排序(数字) - 最低数字(秒)(所以它是最早的)head
获取第一行(最旧的)cut
删除秒字段。如果您有GNU查找,则可以使用-printf
获取“秒TAB日期”,而不需要使用xargs
和stat
命令,例如:
find arguments -printf "%T@\t%c\n" | sort -n | head -1 | cut -f2
答案 1 :(得分:0)
您希望使用find来查找/ home /目录下10天以上最旧的日志文件。如果这是您的目标,那么您可以使用类似于以下的find
命令:
find /home -type f -name "*.log" -mtime +10 -printf "%TY%Tm%Td%TH%TM%TS %p\n" | \
sort | head -n 1 >> /home/text.txt
head
命令之前的输出将是按升序排列的文件列表,如下所示(以“* .c”模式显示):
20140621130603.9932529560 ./fill8bit.c
20140623130713.1503117800 ./strtol2.c
20140623133243.9487796380 ./strtol1.c
20140623215536.9085778830 ./mpg.c
...
头部-n1只取第一个。那就是:
20140621130603.9932529560 ./fill8bit.c