bash 在使用 ls 找到文件之前打印 x 个文件

bash print x number of files before file found using ls

我有一个目录,里面有一堆 yyyymmdd.hhmmss 格式的文件。我要查询某个时间之前的x个文件。

例如,我有一个目录,其中包含每 2 分钟命名一次的文件(例如,20190205.000200、20190205.000400、20190205.000600、...、20190205.235800)。在输入时间之前,我想要 x 个文件的名称。例如,假设我选择时间为“20190205.200000”,我想要 15 个文件。这将生成从 20190205.193000 到 20190205.20000 的文件(15 个文件,时间步长为 2 分钟 = 半小时)。 'ls' 命令有没有办法做到这一点(甚至可能使用 awk、grep、sed 等)?或者转换为日期时间并每 2 分钟循环一次会更容易吗?

您可以列出目录的内容,grep 文件名并在匹配前显示 X 条目

有了这些文件

  ls -1   
20190205.0000000
20190205.0000200
20190205.0000400
20190205.0000600
20190205.0000800
20190205.0001000
20190205.0001200
20190205.0001400
20190205.0001600
20190205.0001800
20190205.0002000

你可以做到

  ls -1 | grep 20190205.0001400 -B 3 
20190205.0000800
20190205.0001000
20190205.0001200
20190205.0001400

其中 -B 标志用于设置匹配前显示的行数