Bash如何对管道进行排序、查找和grep

Bash如何对管道进行排序、查找和grep,bash,shell,scripting,Bash,Shell,Scripting,我正在尝试编写一个shell脚本,它接受包含特定编号的文件的一行,问题是我需要对该文件进行排序,因为我需要最后一个文件的一行具有特定名称。 我写了这段代码,但似乎不起作用 sort -n | find -name '*foo*' -exec grep -r -F '11111' {} \; 对文件进行排序非常重要,因为我需要搜索最后一个文件。文件名的类型为res_yyyy_mm_dd_foo,必须按yyyy排序,如果按mm排序,则相同,因此听起来如下所示: cd home/input_outp

我正在尝试编写一个shell脚本,它接受包含特定编号的文件的一行,问题是我需要对该文件进行排序,因为我需要最后一个文件的一行具有特定名称。 我写了这段代码,但似乎不起作用

sort -n | find -name '*foo*' -exec grep -r -F '11111' {} \;

对文件进行排序非常重要,因为我需要搜索最后一个文件。文件名的类型为res_yyyy_mm_dd_foo,必须按yyyy排序,如果按mm排序,则相同,因此

听起来如下所示:

cd home/input_output.1/inp.1/old_res23403/
ls -1 | sort -r | xargs cat -- | grep '11111' | head -n1
ls-1在当前目录中生成一个文件名列表,每行一个

sort-r按逆字母顺序对它们进行排序,因为您的名字使用大端日期格式,所以将最新的文件放在第一位

xargs cat-连接所有这些文件的内容

grep“11111”查找包含11111的所有行

head-n1将结果限制在第一行


实际上,这将以相反的顺序为您提供文件的第一个匹配行,即最后一行。

您的目录层次结构是什么样的?什么是*foo*?编辑了这个问题,foo,因为我只搜索名称中的文件,我会先查找,然后排序,然后是尾部-1以获得最后一个文件,然后是grep。我的其他问题呢?$home/input\u output.1/inp.1/old\u res23403这是层次结构