bash - 具有特定名称范围的 Bash 列表文件
问题描述
我有一个目录,其中包含具有唯一时间的 txt 文件,这些文件在一夜之间生成。鉴于文件中的唯一时间戳,我正在尝试列出这些文件。文件名的一些示例如下:
file_20210122_1130_1.txt
file_20210122_1133_1.txt
file_20210122_1221_1.txt
file_20210122_1342_1.txt
file_20210122_1721_1.txt
file_20210122_1911_1.txt
file_20210122_2009_1.txt
file_20210122_2020_1.txt
file_20210122_2130_1.txt
...
我希望能够列出 1900 到 2100 之间的文件(使用文件名本身包含的模式),它应该列出以下内容:
file_20210122_1911_1.txt
file_20210122_2009_1.txt
file_20210122_2020_1.txt
我正在尝试使用下面的代码片段,但它部分有效并且没有列出所有文件。
cd /home/somedir/files;
ls *.txt | awk '/1900/,/2100/'
任何帮助,将不胜感激。
解决方案
如果文件名的格式相同,您可以使用 awk 并将字段分隔符设置为_
Then 检查第 3 个字段是否在 1900 和 2100 之间
ls -A1 *.txt | awk -v FS=_ '$3 >= 1900 && $3 <= 2100'
输出
file_20210122_1911_1.txt
file_20210122_2009_1.txt
file_20210122_2020_1.txt
推荐阅读
- r - rstudio中2列的多行迭代测试
- http - 是否有内置的方式来响应 HTTP 消息 200 和空正文?
- excel - 与属于列表的标准相对应的数字的 sumproduct
- javascript - 使用 SelectBoxIt js 时,JAWS 不读取使用无序列表创建的下拉列表项
- javascript - 为迷你播放器功能禁用 YouTube 的下拉功能
- angular - 子组件的唯一提供者值
- python - 如何在 Python for Leaflet 中将地球图像调整为平坦?
- google-sheets - 基于具有日期范围+单个日期的单个单元格条件格式化多个单元格
- java - Bukkit 自定义死亡系统
- cassandra - 一致性 ONE/LOCAL_QUORUM 读取查询期间的 Cassandra 超时