我有一个像这样的文件目录:
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
命令来选择最新的文件。我只是不知道该怎么做。
答案 0 :(得分:4)
即便如下也可以。
ls -t | head -n1 name_pattern.o*
这将选择以给定模式开头的文件,最新的时间戳首先出现,并且只接受第一个文件。所以最后这样做,
grep -c '***END' `ls -t | head -n1 name_pattern.o*`
答案 1 :(得分:2)
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*`