击;如何将多个文件合并为一个文件

时间:2018-03-23 15:36:37

标签: 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

4 个答案:

答案 0 :(得分:1)

for FILE in "File 1" "File 2" "File 3"; do
    echo "$FILE"
    cat "$FILE"
done > master

答案 1 :(得分:1)

您要求的是cat的含义;它是concatenate的缩写,因为它将文件的内容连接在一起。

但它没有将文件名注入输出。如果你想要那里的文件名,你最好的选择可能是一个循环:

for f in "File 1" "File 2" "File 3"; do
    printf '%s\n' "$f"
    cat "$f"
done > master

答案 2 :(得分:0)

这将完成工作

for f in File{1..3} ; do
    echo $f >> master;
    cat $f >> master;
done

答案 3 :(得分:0)

使用gnu sed

sed -s '1F' *
  

' - s' 的   ' - 分离'        默认情况下,'sed'将考虑命令中指定的文件        作为单个连续长流的线。这个GNU'sed'扩展名        允许用户将它们视为单独的文件:范围地址        (例如'/ abc /,/ def /')不允许跨越多个文件行        数字是相对于每个文件的开头,'$'指的是        每个文件的最后一行,以及从'R'命令调用的文件        在每个文件的开头重绕。

     

'F'        打印出当前输入文件的文件名(带尾随        换行)。