Linux: Merging multiple files, each on a new line
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?
just use awk
awk 'FNR==1{print ""}1' *.txt
If you have a paste
that supports it,
paste --delimiter=\\n --serial *.txt
does a really great job
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
for file in *.txt
do
cat "$file"
echo
done > newfile
I'm assuming you want a line break between files.
for file in *.txt
do
cat "$file" >> result
echo >> result
done
精彩评论