bash - MacOS终端中按文件创建日期降序对grep输出进行排序的命令是什么?
问题描述
我想递归地查找目录中包含字符串“aloha”的所有文件。我将使用 grep 命令来执行此操作,输出将是文件路径列表。我想按它们的创建日期(降序)对它们进行排序。我知道在 MacOS 上,内核实际上存储文件创建日期,这与其他系统不同,所以我知道这是可能的,但我就是想不通。
grep -iRl "aloha" dir/ | sort -k1 -n
grep -iRl "aloha" dir/ | ls -U
grep -iRl "aloha" dir/ | xargs stat -f '%c %N'|sort
鉴于以下文件位于目录 dir 中:
file1.txt - created on 1/2/2019
file2.txt - created on 1/3/2019
命令的输出应该是:
file2.txt
file1.txt
解决方案
ls -Ut
可以做到这一点。但是ls
不会从标准输入中获取文件名,因此您不能将输出直接通过管道传递给它。它要求文件名是命令行参数,因此您可以使用xargs
将标准输入转换为参数。
grep -iRl "aloha" dir | xargs ls -Ut
但是,如果任何文件名在其名称中包含空格,这将无法正常工作。使用该--null
选项grep
使其在每个文件名之后输出一个空字节,并使用 -0 option to
xargs` 使其将其用作文件名之间的分隔符。
grep -iRl --null "aloha" dir | xargs -0 ls -Ut
推荐阅读
- javascript - 如何将表格行映射为打字稿中不同接口的潜在行?
- python - 向 pandas 数据框添加一个新列,其中包含组内的递增日期
- python - ValueError:无法将 mmap 的 dtype 上的空文件映射为 str
- javascript - JsPDF - 根据标签值更改文件名以下载 PDF
- python - 在不覆盖数据的情况下向现有 excel 文件添加新行(Python)
- html - 如何制作滤镜:没有一个元素的灰度(CSS)
- php - 在 PhpStorm 中找不到 Php 可执行文件
- r - 过滤掉两个值之间的行
- firebase - Firebase 电话授权 - 短信格式错误
- postgresql - 有没有办法用 postgre sql 配置 ibm 业务自动化?