首页 > 解决方案 > 在 Linux 中查找某个文件并打印其创建和修改时间

问题描述

我想根据它/他们拥有的特定文本在 Linux 目录中找到一些文件。一旦我找出文件,我想打印创建和修改时间。

例如,我有一个目录 X,它有四个文件,即:x1.txt、x2.txt、x3.text 和 x4.txt,其中包含以下信息。

x1.txt

Name: Mark
Age: 22
Country: USA

x2.txt

Name: Jiff
Age: 26
Country: USA

x3.txt

Name: Sarah
Age: 30
Country: Canada

x4.txt

Name: Heather
Age: 23
Country: USA

我想要的是打印包含“国家:加拿大”文本的文件的创建和修改时间

我所做的是我只是想出了这种格式的文件

# echo $(grep -rn 'Country: Canada' *)

我得到了

x3.txt:3:Country: Canada

我需要首先提取文件名,然后使用名称作为时间命令的输入来获取创建和修改时间。

标签: linuxbashunix

解决方案


使用-lgrep 选项仅列出文件名:

grep -lrn 'Country: Canada' *

要打印文件的创建/修改时间,请使用stat

stat <file>

您可以按照自己的喜好格式化输出:

stat --printf "Created: %w\nModified: %y\n"

综上所述,您可以通过以下xargs命令将 grep 的输出列表发送到 stat 的输入列表:

grep -lrn 'Country: Canada' * | xargs stat --printf "Created: %w\nModified: %y\n"

推荐阅读