[英]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.