Bash如何管道排序,查找和grep



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

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将结果限制为第一个这样的行。

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

最新更新