awk - 如何使用 awk 解决日期过滤器的问题
问题描述
我想过滤一些文件的日期(我不能使用 find,因为这些文件在 HDFS 中)。我找到的解决方案是使用 awk。
这是我要处理的数据示例
drwxrwx--x+ - hive hive 0 2019-01-01 20:02 /dat1
drwxrwx--x+ - hive hive 0 2019-01-02 16:38 /dat2
drwxrwx--x+ - hive hive 0 2019-01-03 16:59 /dat3
如果我使用这个命令:
$ ls -l |awk '$6 > "2019-01-02"'
drwxrwx--x+ - hive hive 0 2019-01-03 16:59 /dat3
我没有任何问题,但是如果我想创建一个脚本来帮助我在 2 天前进行过滤,我在 awk 中添加了表达式:
$ date +%Y-%m-%d --date='-2 day'
2019-01-02
它是这样的,但不起作用:
ls -l |awk '$6 >" date +%Y-%m-%d --date=\'-2 day\'"'
>
好像少了点什么,但不知道是什么。
解决方案
首先,永远不要尝试解析ls
.
如果您想掌握最长n
天数的文件/目录,这些文件/目录位于目录中/path/to/dir/
$ find /path/to/dir -type f -mtime -2 -print
$ find /path/to/dir -type d -mtime -2 -print
第一个用于文件,第二个用于目录。
如果你仍然想用 ls 解析awk
,你可以尝试这样的事情:
$ ls -l | awk -v d=$(date -d "2 days ago" "+%F") '$6 > d'
您遇到的问题是您将双引号嵌套到单引号中。
推荐阅读
- c - 在 Arduino 上执行一段时间后的事情
- excel - Excel 导出格式的更改 - 我们如何收到更改通知?
- text-to-speech - Microsoft Azure 认知服务 - 必应文本到语音 API - 使用 javascript 播放音频
- javascript - 如何重定向 nodejs/express 中的上路径?
- python - 在 Python 中流式传输 FHD 视频的图像上覆盖热图
- javascript - 从父级访问 Angular 1.x 组件属性
- sql-server - 在 SQL 中将数据插入到具有默认聚集索引的表后会发生什么
- azure - 在 Azure 中将 unmanged 转换为 managed 后如何删除旧磁盘
- gallery - Safari 扩展发布流程
- node.js - 当我们有来自多个客户的多个请求时处理请求