【问题标题】:How to display contents of all files under a directory on the screen using unix commands如何使用unix命令在屏幕上显示目录下所有文件的内容
【发布时间】:2014-02-12 05:13:39
【问题描述】:

使用cat命令如下我们可以在屏幕上显示多个文件的内容

cat 文件1 文件2 文件3

但是在一个目录中,如果有超过 20 个文件,我希望所有这些文件的内容都显示在屏幕上,而不是像上面提到的所有文件的名称那样使用 cat 命令。

我该怎么做?

【问题讨论】:

    标签: unix cat


    【解决方案1】:

    您可以使用* 字符来匹配当前目录中的所有文件。
    cat * 将显示所有文件的内容。
    如果你想只显示扩展名为 .txt 的文件,你可以使用cat *.txt,或者如果你想显示所有文件名以“file”开头的文件,就像你的例子一样,你可以使用cat file*

    【讨论】:

    • 它适用于当前目录,但是如果我想显示当前目录子目录下的文件内容,那么如何?
    • 如果只是一级子目录,使用cat * */*
    • 否则find . -type f -exec cat {} \; 小心你没有任何非字符文件,因为你可能会搞砸你的显示如果你猫那些。
    • @bvb 这不在您的问题中,但是是的,如果您也想转到下面的一个子目录,您可以使用cat * */*
    【解决方案2】:

    如果只是一级子目录,使用cat * */* 否则,

    find . -type f -exec cat {} \;
    

    这意味着运行find 命令,在当前目录(.)中搜索所有普通文件(-type f)。对于找到的每个文件,运行应用程序 (-exec) cat,并将当前文件名作为参数({} 是文件名的占位符)。需要转义的分号来终止 -exec 子句。

    【讨论】:

    • 在 cat * / 命令中为一级子目录为什么要给出 * / 以及如何解释它?
    • * 本身会扩展到您当前目录中的所有文件。 */*(无空格)扩展到当前目录中所有子目录中的所有文件。 */*/* 将匹配目录内目录中的所有文件,依此类推。如果您要使用 Unix,这些都是非常基本的东西。
    【解决方案3】:

    我还发现在打印每个文件的内容之前打印文件名很有用:

    find ./ -type f | xargs tail -n +1
    

    它也会遍历所有子目录。

    【讨论】:

      【解决方案4】:

      您也可以使用awk。让我们考虑一下我们需要打印目录 some-directory 中所有文本文件的内容

      awk '{print}' some-directory/*.txt
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-09
        • 2021-01-06
        • 1970-01-01
        相关资源
        最近更新 更多