我想将多个文本文件连接到终端中的一个大文件。我知道我可以使用cat命令来做到这一点。但是,我希望每个文件的文件名在该文件的“数据转储”之前。有人知道怎么做吗?
我目前拥有的:
file1.txt = bluemoongoodbeer
file2.txt = awesomepossum
file3.txt = hownowbrowncow
cat file1.txt file2.txt file3.txt
期望的输出:
file1
bluemoongoodbeer
file2
awesomepossum
file3
hownowbrowncow
这也可以做到:
$ find . -type f -print -exec cat {} \;
./file1.txt
Content of file1.txt
./file2.txt
Content of file2.txt
下面是对命令行参数的解释:
find = linux `find` command finds filenames, see `man find` for more info
. = in current directory
-type f = only files, not directories
-print = show found file
-exec = additionally execute another linux command
cat = linux `cat` command, see `man cat`, displays file contents
{} = placeholder for the currently found filename
\; = tell `find` command that it ends now here
您还可以通过布尔运算符组合搜索,如-and或-or。找到-ls也很好。
如果你想要的结果与你想要的输出格式相同,你可以尝试:
for file in `ls file{1..3}.txt`; \
do echo $file | cut -d '.' -f 1; \
cat $file ; done;
结果:
file1
bluemoongoodbeer
file2
awesomepossum
file3
hownowbrowncow
你可以在剪切之前和之后加上echo -e,这样你就有了行与行之间的间距:
$ for file in `ls file{1..3}.txt`; do echo $file | cut -d '.' -f 1; echo -e; cat $file; echo -e ; done;
结果:
file1
bluemoongoodbeer
file2
awesomepossum
file3
hownowbrowncow