File Grep上次出现在编号目录中的特定文件中

File Grep上次出现在编号目录中的特定文件中,file,grep,numbers,File,Grep,Numbers,我想从大量目录中grep参数的最后一行,这些目录除了末尾的一个数字(更具体地说,0p90->1p10)之外,都具有相同的名称。我想grep我指定的参数的最后一次出现,最后,将所有这些输出到一个文件中 我可以对单个文件执行此操作,例如,如果我编写: grep 'total moment' CeB6_new_lat_parm_4p119_scale_0p90/INFO.OUT | tail -n 1 这正是我想要的,但是在很多目录中有很多INFO.OUT文件,我如何生成一个命令来对所有存在的目录执

我想从大量目录中grep参数的最后一行,这些目录除了末尾的一个数字(更具体地说,0p90->1p10)之外,都具有相同的名称。我想grep我指定的参数的最后一次出现,最后,将所有这些输出到一个文件中

我可以对单个文件执行此操作,例如,如果我编写:

grep 'total moment' CeB6_new_lat_parm_4p119_scale_0p90/INFO.OUT | tail -n 1
这正是我想要的,但是在很多目录中有很多INFO.OUT文件,我如何生成一个命令来对所有存在的目录执行此操作

多谢各位

我想我能做到这一点的一个方法是格雷普:

grep 'total moment' CeB6_new_lat_parm_4p119_scale_*/INFO.OUT | tail -n 1
但是我不知道这是哪个目录,它也只会给我最后一个文件的最后一行


谢谢

更简单的解决方案是制作脚本,您可以使用自己喜欢的脚本语言。例如,在bash中,这是一个解决方案:

#!/bin/bash
for FILE in $*/CeB6_new_lat_parm_4p119_scale_*/INFO.OUT
do
    echo -ne $FILE\\n\\t"->"
    tac $FILE | grep -m1 'total moment'
done
exit 0
[解释脚本]
对于$*/CeB6\u new\u lat\u parm\u 4p119\u scale\u*/INFO.OUT中的文件
循环将每个文件分配给变量文件。
echo-ne$FILE\\n\\t“->”
使脚本的输出更加友好。
tac$FILE
允许您逐行向后查看文件。
grep-m1‘总时刻’
用第一个匹配项停止grep。
tac$FILE | grep-m1'total moment'
比在全文中使用grep稍微更有效,但您也可以使用
grep'total moment'$FILE | tail-n1

[如何使用(建议)]
将脚本设置为/usr/local/bin/totalm.sh
chmod+x/usr/local/bin/totalm.sh

tolalm.sh/DIR\u文件夹


如果您不想使用/DIR\u OF\u文件夹,可以在脚本中为/DIR\u OF\u文件夹更改$*。

很高兴看到输入和预期输出示例,请更新问题。