我在一个目录中有多个文件,我想使用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
答案 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' 打印出当前输入文件的文件名(带尾随 换行)。