在最新文件中 Grep

在最新文件中 Grep

我正在尝试从子文件夹中的最新文件中找到特定行。文件具有相同的名称。因此结构如下:

  • 文件夹
    • 子文件夹1
      • 文件名.xml
    • 子文件夹2
      • 文件名.xml

我正在使用 grep 来获取行

grep -r "mySubString" folder/

我尝试使用 find 对文件进行排序,正如建议的那样这里。但我不知道如何将两者结合起来以从最新文件中获取行。

感谢您的帮助。

答案1

find . -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "

这将返回从您运行此命令的目录及其所有子目录中创建的最新文件。如果您想要在特定目录中搜​​索,请更改.为目录路径。

使用 grep 查找此文件的内容:

cat `find . -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "` | grep "mySubString"

编辑:我不确定。我自己很快尝试了一下,而且成功了。我创建了一个测试文件并使用了这个命令。对我来说很有效。如果有问题,请告诉我。

答案2

zsh:

grep pattern **/*(.om[1])

om按修改日期排序并且.是常规文件的限定符。

GNU find

grep pattern "$(find -type f -printf '%T@ %p\n'|sort -n|tail -n1|cut -d' ' -f2-)"

%T@是修改时间,%p是路径名。

BSD:

grep pattern "$(find . -type f -exec stat -f '%m %N' {} +|sort -n|tail -n1|cut -d' ' -f2-)"

%m是修改时间,%N是路径名。

重击4:

shopt -s globstar;grep pattern "$(ls -dt **|head -n1)"

这包括目录并可能导致参数列表太长的错误。

相关内容