繁体   English   中英

Linux命令以最新文件匹配名称模式查找文本

[英]Linux command to find text in most recent file matching name pattern

我有一个像这样的文件目录:

parent
    /dir1
        file1
        file2
        other
        something
        name_pattern.o23409284
        name_pattern.o29203429
        name_pattern.o39208235
    /dir2
    ...

我想运行一个命令,该命令将在最新的name_pattern.o *文件中查找以以下内容开头的行:

***END

所以看起来很容易做到

grep -c '***END' name_pattern.o*

但我只想查看最新文件,而忽略所有其他文件。 所以我认为我需要某种find命令,它将选择最新的文件。 我只是不知道该怎么做。

即使是以下情况也可以做到。

ls -t | head -n1 name_pattern.o*

这将选择以给定模式开头的文件,最新的时间戳在前,仅接收第一个文件。 所以最后要做

grep -c '***END' `ls -t | head -n1 name_pattern.o*`
perl -e 'print( ( sort { -M $a <=> -M $b } @ARGV )[0], "\n");' name_pattern.o*

这按上次修改时间对它们进行排序。 将$ a和$ b交换为最旧。 还有一些修改标志可以“查找”,但是我发现很难找到目录内比较操作...

如果您需要单行:

grep '***END' `perl -e 'print( ( sort { -M $a <=> -M $b } @ARGV )[0], "\n");' name_pattern.o*`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM