根据时间列出文件
用户提供日期作为输入。例如:20/11/2013( dd / mm / yyyy )
输出文件列表
我尝试了以下内容: 文件列表( 10PM - 7月11日运行)
find . -type f -exec ls -ltr {} \; | grep -E "Nov 18.22:|Nov 18.23:|Nov 19.00:| Nov 19.01:| Nov 19.02:| Nov 19.03:| Nov 19.04:| Nov 19.05:| Nov 19.06:| Nov 19.07:"
是否有任何替代/优化方式列出文件而不对上述单行中提到的时间/日期值(如22:,23:,00 :)进行硬编码。
答案 0 :(得分:2)
怎么样:
find . -type f -newermt '11/19/2013 20:00:00' -not -newermt '11/20/2013 08:00:00'
答案 1 :(得分:2)
您可以从ls
输出控制时间样式。然后条件比较很容易。
find . -type f -exec ls -ltr --time-style=+"%Y%m%d%H" {} \; | awk '{if($6>2013111822 && $6<2013111907) print $0}'
答案 2 :(得分:2)
以下内容可以使用(使用用户输入日期)。它使用临时文件来定义日期算术的时间间隔和日期命令:
#!/bin/bash
echo -n "Date (dd/mm/yyyy): "
read ddmmyyyy
mmddyyyy=${ddmmyyyy:3:2}/${ddmmyyyy:0:2}/${ddmmyyyy:7:4}
#echo $mmddyyyy
TMP=/tmp/so20089884
touch $TMP.a.$PID $(date -d "$mmddyyyy 08:00")
touch $TMP.z.$PID $(date -d "$mmddyyyy 08:00 - 8 hours")
find . -type f -newer $TMP.z.$PID -not -newer $TMP.a.$PID
rm -f $TMP.[az].$PID
答案 3 :(得分:0)
使用ls command
的替代方法
试试下面的一个,
19/11/2013 - 晚上10点(昨天)后创建的文件
ls -l | awk -F " " '{if($6 == "Nov" && $7 == "19" && $8 > "22:00") print}'
20/11/2013 - 在上午8点(今天)之前创建的文件
ls -l | awk -F " " '{if($6 == "Nov" && $7 == "20" && $8 < "08:00") print}'