Bash如何对管道进行排序、查找和grep
我正在尝试编写一个shell脚本,它接受包含特定编号的文件的一行,问题是我需要对该文件进行排序,因为我需要最后一个文件的一行具有特定名称。 我写了这段代码,但似乎不起作用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
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这是层次结构