Unix:文件列表

时间:2013-11-20 07:29:15

标签: bash unix

根据时间列出文件

用户提供日期作为输入。例如:20/11/2013( dd / mm / yyyy

输出文件列表

  • 19/11/2013 - 晚上10点(昨天)后创建的文件
  • 20/11/2013 - 在上午8点(今天)之前创建的文件

我尝试了以下内容: 文件列表( 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 :)进行硬编码。

4 个答案:

答案 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}'