Bash 猛击;如何将多个文件合并为一个文件
我在一个目录中有多个文件,我想使用Bash将每个文件合并成一个文件。输出需要包含文件名,然后列出其内容。例如Bash 猛击;如何将多个文件合并为一个文件,bash,scripting,Bash,Scripting,我在一个目录中有多个文件,我想使用Bash将每个文件合并成一个文件。输出需要包含文件名,然后列出其内容。例如 $ cat File 1 store $ cat File 2 bank $ cat File 3 car 所需输出位于名为master的单个文件中 $ cat master File 1 store File 2 bank File 3 car 这就行了 for f in File{1..3} ; do echo $f >> master; ca
$ cat File 1
store
$ cat File 2
bank
$ cat File 3
car
所需输出位于名为master的单个文件中
$ cat master
File 1
store
File 2
bank
File 3
car
这就行了
for f in File{1..3} ; do
echo $f >> master;
cat $f >> master;
done
你所要求的是猫的本意;它是
concatenate
的缩写,因为它将文件的内容连接在一起
但它不会将文件名注入到输出中。如果您希望文件名在那里,最好的选择可能是循环:
for f in "File 1" "File 2" "File 3"; do
printf '%s\n' "$f"
cat "$f"
done > master
使用gnu sed
sed -s '1F' *
“-s”
“分开”
默认情况下,“SED”将考虑命令上指定的文件。
作为一条连续的长流的线。此GNU“sed”扩展
允许用户将它们视为单独的文件:范围地址
(例如“/abc/,/def/”)不允许跨多个文件,第行
数字相对于每个文件的开头,“$”表示
每个文件的最后一行,以及从“R”命令调用的文件
在每个文件的开始处重绕
“F”
打印出当前输入文件的文件名(带有尾随字符)
新行)
到目前为止你试过吗?你的例子是错误的,你需要在文件名中引用空格,即使是“cat”。输出将不包含该文件names@neuhaus; 我明白了。修复了。我可以用通配符代替键入每个文件的单个名称吗?我分配了更多需要合并的文件,而不仅仅是三个文件。我需要分组的所有文件都在一个目录中。最简单的方法是更改目录,然后对*中的文件使用
;执行
。
sed -s '1F' *