使用以下命令我们可以在屏幕上显示多个文件的内容:
cat file1 file2 file3
但是如果一个目录中有超过20个文件,我想要将所有这些文件的内容显示在屏幕上,而不使用像上面那样逐个列出文件名的方式。
我应该如何做呢?
*
字符来匹配当前目录中的所有文件。cat *
将显示所有文件的内容。cat *.txt
,或者如果您想显示所有以 "file" 开头的文件名,例如您的示例,您可以使用cat file*
。cat * */*
。如果有多个层级,则……find . -type f -exec cat {} \;
这意味着运行find
命令,在当前目录(.)中搜索所有普通文件(-type f)。对于找到的每个文件,使用当前文件名作为参数({}是文件名的占位符)运行应用程序(-exec) cat。转义分号是必需的,以终止-exec子句。
*
代表当前目录下的所有文件。 */*
(无空格)代表当前目录及其子目录下的所有文件。 */*/*
则匹配目录中的目录中的所有文件,以此类推。如果你要使用 Unix,这些都是非常基础的知识。 - rojomoke我发现在打印每个文件的内容之前打印文件名也很有用:
find ./ -type f | xargs tail -n +1
它将遍历所有子目录。
for file in parent_dir/*.file_extension; do echo $file; cat $file; echo; done
grep . *
如果您要查看/sys或/proc文件,这种方法是可行的,但对于大文件来说不太适用。
awk
。假设我们需要打印目录 some-directory 中所有文本文件的内容。awk '{print}' some-directory/*.txt
cat * */*
。 - rojomokefind . -type f -exec cat {} \;
。请注意,不要有任何非字符文件,因为如果你使用cat命令读取它们,可能会破坏你的显示。 - rojomokecat * */*
。 - Munim