【问题标题】:Read contents of large files without using "cat" command in linux在linux中不使用“cat”命令读取大文件的内容
【发布时间】:2018-01-09 06:39:42
【问题描述】:

我正在尝试一种更有效的方式来读取 Linux 中的文件内容,而不使用“cat”命令,尤其是对于较大的文件内容,因为在这种情况下cat 只会占用服务器上的内存和 CPU。

我想到的一件事是使用grep -v "character-set-which-is-unlikely-in-the-file" filename

但是每次使用不同的字符集并希望它不会出现在文件中,效率不高。

还有其他想法吗?

【问题讨论】:

  • 你试过less命令吗?
  • 你能澄清一下你想要做什么吗?您只是想访问磁盘上的文件,例如以便缓存它,还是想对内容做一些事情?
  • 我只想访问磁盘上的文件(读取文件的内容),所以它会被缓存,但内容会很大。我见过一些情况(与此无关),如果我对文件进行分类,特别是当我尝试将其通过管道传递给其他命令时,系统会变慢并且命令崩溃。所以我想知道是否有比cat 更有效和更快的方式来访问大文件
  • @Matzy 我想立即阅读文件的全部内容,而不是分页阅读

标签: linux file cat


【解决方案1】:

如果你只是想通读文件,让它被缓存,最简单的方法可能是这样的:

cat filename > /dev/null

请注意,您无需在屏幕上显示数据即可从磁盘读取数据。该命令读取文件,并通过将其转储到 /dev/null 来忽略内容,但它仍会读取所有数据。

如果 CPU 负载上升,这可能是一件好事,这意味着计算机正在努力工作,并且会尽快完成。但是,如果它崩溃,则说明还有其他问题。

如果你有特定的理由不使用“cat”命令,可以试试“dd”,但是写起来比较复杂,不会更快:

dd if=filename of=/dev/null bs=1M

附录:

这启发了我进行一些测试。在我的特定计算机上,“cat”和“dd”在尚未缓存时读取机械磁盘上​​的大文件需要 24.27-24.31 秒,缓存时需要 0.39-0.40 秒。 (每个案例三个测试,变化很小。)

这两个程序都包含写入数据的代码,即使它被转储到 /dev/null,所以人们可以预期专门编写为只读的程序会稍微快一些,但我尝试时得到了相同的时间那个。

【讨论】:

    猜你喜欢
    • 2017-09-08
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多