【发布时间】:2014-02-12 05:13:39
【问题描述】:
使用cat命令如下我们可以在屏幕上显示多个文件的内容
cat 文件1 文件2 文件3
但是在一个目录中,如果有超过 20 个文件,我希望所有这些文件的内容都显示在屏幕上,而不是像上面提到的所有文件的名称那样使用 cat 命令。
我该怎么做?
【问题讨论】:
使用cat命令如下我们可以在屏幕上显示多个文件的内容
cat 文件1 文件2 文件3
但是在一个目录中,如果有超过 20 个文件,我希望所有这些文件的内容都显示在屏幕上,而不是像上面提到的所有文件的名称那样使用 cat 命令。
我该怎么做?
【问题讨论】:
您可以使用* 字符来匹配当前目录中的所有文件。cat * 将显示所有文件的内容。
如果你想只显示扩展名为 .txt 的文件,你可以使用cat *.txt,或者如果你想显示所有文件名以“file”开头的文件,就像你的例子一样,你可以使用cat file*
【讨论】:
cat * */*
find . -type f -exec cat {} \; 小心你没有任何非字符文件,因为你可能会搞砸你的显示如果你猫那些。
cat * */*。
如果只是一级子目录,使用cat * */*
否则,
find . -type f -exec cat {} \;
这意味着运行find 命令,在当前目录(.)中搜索所有普通文件(-type f)。对于找到的每个文件,运行应用程序 (-exec) cat,并将当前文件名作为参数({} 是文件名的占位符)。需要转义的分号来终止 -exec 子句。
【讨论】:
* 本身会扩展到您当前目录中的所有文件。 */*(无空格)扩展到当前目录中所有子目录中的所有文件。 */*/* 将匹配目录内目录中的所有文件,依此类推。如果您要使用 Unix,这些都是非常基本的东西。
我还发现在打印每个文件的内容之前打印文件名很有用:
find ./ -type f | xargs tail -n +1
它也会遍历所有子目录。
【讨论】:
您也可以使用awk。让我们考虑一下我们需要打印目录 some-directory 中所有文本文件的内容
awk '{print}' some-directory/*.txt
【讨论】: