Append date to filename in linux Append date to filename in linux linux linux

Append date to filename in linux


You can use backticks.

$ echo myfilename-"`date +"%d-%m-%Y"`"

Yields:

myfilename-25-11-2009


There's two problems here.

1. Get the date as a string

This is pretty easy. Just use the date command with the + option. We can use backticks to capture the value in a variable.

$ DATE=`date +%d-%m-%y` 

You can change the date format by using different % options as detailed on the date man page.

2. Split a file into name and extension.

This is a bit trickier. If we think they'll be only one . in the filename we can use cut with . as the delimiter.

$ NAME=`echo $FILE | cut -d. -f1$ EXT=`echo $FILE | cut -d. -f2`

However, this won't work with multiple . in the file name. If we're using bash - which you probably are - we can use some bash magic that allows us to match patterns when we do variable expansion:

$ NAME=${FILE%.*}$ EXT=${FILE#*.} 

Putting them together we get:

$ FILE=somefile.txt             $ NAME=${FILE%.*}$ EXT=${FILE#*.} $ DATE=`date +%d-%m-%y`         $ NEWFILE=${NAME}_${DATE}.${EXT}$ echo $NEWFILE                 somefile_25-11-09.txt                         

And if we're less worried about readability we do all the work on one line (with a different date format):

$ FILE=somefile.txt  $ FILE=${FILE%.*}_`date +%d%b%y`.${FILE#*.}$ echo $FILE                                 somefile_25Nov09.txt