按顺序读取许多小文件

时间:2015-03-08 23:44:26

标签: bash

我有大量(4000)相当小的文件 - 平均可能有3行(以及这种类型的几个集合)。文件名的字母顺序对应于预期的阅读顺序。

基本上我想做的是按顺序快速浏览内容,基本上是:

cat * | less

此命令的问题在于我看不到文件的结束位置和新文件的开始位置。

我还要注意,我知道我可以在每个文件的末尾附加一个标记然后将它们组合起来。我的问题是针对一个不需要更改文件或创建新文件的解决方案。

4 个答案:

答案 0 :(得分:3)

tail -n +1 * | less

看起来像这样:

==> txts/18091.pdf-000_p01_p1_p01.png.txt <==
Deutscher Bundestag


==> txts/18091.pdf-000_p02_p1_p01.png.txt <==
Stenografischer Bericht


==> txts/18091.pdf-000_p03_p1_p01.png.txt <==
91. Sitzung


==> txts/18091.pdf-000_p04_p1_p01.png.txt <==
Berlin, Donnerstag, den 5. März 2015

答案 1 :(得分:1)

如果你是一个人,想要按顺序浏览大量文件的内容,只需执行

less *

扫描完一个文件后,使用:n打开下一个文件。

答案 2 :(得分:1)

提示上的一个小循环应该可以解决问题:只需使用find(或ls)来获取所需的所有文件名。将这些内容传递给while read,提供变量名称,然后echo标记,然后cat文件。 done结束循环。将生成的流传输到less,您应该可以轻松地浏览整个内容。

find . -type f | sort | while read file; do echo "#### $file" ; cat $file; done | less

答案 3 :(得分:1)

您可以在没有循环的情况下使用find(使用GNU find 4.4.2检查):

find -type f -printf "--< %f >----\n" -exec cat {} \; | less

这与任何shell特性无关(只要你使用GNU find)并且还添加了一个很好的标题:

--< x >----
hello
--< y >----
world
相关问题