我正在尝试编写一个 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
将结果限制为第一个这样的行。
实际上,这为您提供了文件的第一个匹配行,顺序相反,即最后一行。