我正在尝试使用shell脚本从目录中按修改日期的排序顺序查找某个修改日期之后的所有文件。这是我当前shell脚本的一部分。
条件包含两个步骤:1)在某个修改日期之后从目录中获取文件。
2)按修改日期排序。
当前目录包含如下文件:

Mar 28 11:14 file_H_1
Apr  2 16:37 file_K_2
Apr  1 21:43 file_H_3
Apr 16 19:16 file_H_4
Apr 16 21:00 file_H_5
Apr 16 12:00 file_L_6
Apr  9 14:08 file_B_7
Apr  4 00:39 file_H_8
Apr  4 00:39 file_H_9
Apr  4 00:39 file_C_10
Apr  4 00:39 file_H_11
Mar 27 14:39 file_H_12

我希望最终输出为“2018-04-09 00:00:00”之后按修改日期排序的文件列表。
输出应为:
file_B_7
file_L_6
file_H_4
file_H_5

我试过这个:
1)在某个修改日期之后获取文件
find . -type f -newermt "2018-04-09 00:00:00"
OUTPUT of this:
file_L_6
file_H_5
file_B_7
file_H_4

2)在修改日期订购文件
ls -lt
OUTPUT of this
Apr 16 21:00 file_H_5
Apr 16 19:16 file_H_4
Apr 16 12:00 file_L_6
Apr  9 14:08 file_B_7
Apr  4 00:39 file_H_8
Apr  4 00:39 file_H_9
Apr  4 00:39 file_C_10
Apr  4 00:39 file_H_11
Apr  2 16:37 file_K_2
Apr  1 21:43 file_H_3
Mar 28 11:14 file_H_1
Mar 27 14:39 file_H_12

但我正在努力把这两个条件结合起来。
我也尝试过,但它是按文件名排序,而不是按修改日期排序:
find . -type f -newermt "2018-04-9 00:00:00" | sort -n | while read file_name; do
echo file=$file_name
done
    OUTPUT of this:
    file_B_7
    file_H_4
    file_H_5
    file_L_6

请提出一些解决办法。

最佳答案

您也可以将find输出直接插入xargs ls命令行,而不是使用ls

ls -tr `find -type f -newermt "2018-04-09 00:00:00"`

请注意,如果不是所有的文件名都可以通过不正确排序而安静地放入一个命令行-xargs ls中,那么这两种方法都会失败,这里会显示一条错误消息。

关于linux - Shell脚本可在某些修改日期之后查找文件,并按修改日期的顺序对其进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49872339/

10-10 14:03