Linux: Merging multiple files, each on a new line

2020-05-13 20:31发布

I am using cat *.txt to merge multiple txt files into one, but I need each file to be on a separate line.

What is the best way to merge files with each file appearing on a new line?

标签: linux bash
5条回答
爱情/是我丢掉的垃圾
2楼-- · 2020-05-13 20:40

You can iterate through each file with a for loop:

for filename in *.txt; do
    # each time through the loop, ${filename} will hold the name
    # of the next *.txt file.  You can then arbitrarily process
    # each file
    cat "${filename}"
    echo

# You can add redirection after the done (which ends the
# for loop).  Any output within the for loop will be sent to
# the redirection specified here
done > output_file
查看更多
Juvenile、少年°
3楼-- · 2020-05-13 20:40

I'm assuming you want a line break between files.

for file in *.txt
do
   cat "$file" >> result
   echo >> result
done
查看更多
SAY GOODBYE
4楼-- · 2020-05-13 20:44

just use awk

awk 'FNR==1{print ""}1' *.txt
查看更多
祖国的老花朵
5楼-- · 2020-05-13 20:52
for file in *.txt
do
  cat "$file"
  echo
done > newfile
查看更多
趁早两清
6楼-- · 2020-05-13 20:57

If you have a paste that supports it,

paste --delimiter=\\n --serial *.txt

does a really great job

查看更多
登录 后发表回答