Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 461
  • Last Modified:

Concatenate files into one single file

Hi,
I am trying to concatenate the following individual files into one file based on the current date that is attached to the individual file names.
For eg: There could be several files. One of the file name appears like SVCTURN_ON_SO2_29JAN2014_075144.txt and another as PNDGSVCORD_SO1_29JAN2014_075153.txt and so on..
I need to find a way to concatenate these individual files that includes the current date in the name.
0
baralp
Asked:
baralp
  • 3
  • 3
  • 2
  • +2
3 Solutions
 
käµfm³d 👽Commented:
Are you familiar with the cat command?
0
 
baralpAuthor Commented:
yes I am familiar with cat. I can do something like this cat *.txt >> all.txt. But I don't know how to concatenate those files that have current date attached in the file name. For eg. you can see the current date on the file SVCTURN_ON_SO2_26Feb2014_075144.txt that I need to look to concatenate.
0
 
savoneCommented:
This should do it:

for i in `ls | grep 29JAN`; do cat $i >> newfile.txt; done


It will find all the files in the current working directory that have 29JAN in them (current date) and then one by one put the contents of that file into newfile.txt.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
SeanSystem EngineerCommented:
#!/bin/sh

## date format ##
NOW=$(date)

 
## Backup path ##
BAK="/etc/backup/"
FILE="$BAK/$NOW.log"


for i in /etc/logs/*
do
cat $i >> $FILE
done

This should do close to what you want. May need to change the paths/names etc but just put this into a shell script and run it.
0
 
baralpAuthor Commented:
@savone
In your command for i in `ls | grep 29JAN`; do cat $i >> newfile.txt; done
Can we replace 29Jan with the current date variable since the file name changes according to the run date?
0
 
SeanSystem EngineerCommented:
now=$(date +"%m_%d_%Y")

for i in `ls | grep $now`; do cat $i >> newfile.txt; done

This will use the current date.
0
 
baralpAuthor Commented:
I think now=$(date +"%m_%d_%Y")  would be now=$(date +"%d_%m_%Y") as the file name appears like SVCTURN_ON_SO2_26Feb2014_075144.txt. Correct?
0
 
SeanSystem EngineerCommented:
Yes you can change it to match the file.

see reference for the different ways to use the date command.

http://www.cyberciti.biz/faq/unix-linux-appleosx-bsd-shell-appending-date-to-filename/
0
 
savoneCommented:
Yes, but it has to be in the format that is in the filename.

Try this:

today=`date +%d%b`; for i in `ls | grep $today`; do echo $i >> newfile.txt; done

This will format the date to look like this: 26Feb

Which matches the examples you provided.
0
 
TintinCommented:
Assuming the files contain the date format

ddmmmyyyy

eg:  26Feb2014

then you can simply do

cat *$(date +%d%b%Y)* >concatenated_file
0

Featured Post

Receive 1:1 tech help

Solve your biggest tech problems alongside global tech experts with 1:1 help.

  • 3
  • 3
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now