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

时间:2018-04-20 08:21:24

标签: bash shell scripting

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

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

文件排序非常重要,因为我需要在最后一个文件中搜索。文件名的类型为“res_ yyyy _ mm _ dd _foo”,它们必须由 yyyy 如果是 mm ,那么

1 个答案:

答案 0 :(得分:0)

听起来如下:

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将结果限制在第一行。

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