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
标志用于设置匹配前显示的行数
我有一个目录,里面有一堆 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
标志用于设置匹配前显示的行数