Append Current Date To Filename in Bash Shell

ADVERTISEMENTS



Append current date to a filename

How do I append current date (mm_dd_yyyy format) to a filename (e.g., backup_mm_dd_yyyy.sql) under Linux and UNIX like operating systems? How can I append a current date from a variable to a filename under Linux or Unix bash shell? How do I append date to filename?We use the date command to show or set the system date and time. Further we can show the current date and time in the given FORMAT. This page explains how to append current date to a filename using various command line options.

To get the current date in mm_dd_yyyy format use the following date format syntax:

date + "%FORMAT_STRING" date + "%m_%d_%Y" date + "%Y-%m-%d" date +"%FORMAT_STRING" date +"%m_%d_%Y" date +"%Y-%m-%d"

You can store this to a variable name:

var =$ ( date + "%FORMAT_STRING" ) now =$ ( date + "%m_%d_%Y" ) printf "%s

" $now today =$ ( date + "%Y-%m-%d" ) printf "Today we are going to backup file to NFS server at AWS '%s'

" "/efs/my-blog- ${today} .sql.tar.gz" var=$(date +"%FORMAT_STRING") now=$(date +"%m_%d_%Y") printf "%s

" $now today=$(date +"%Y-%m-%d") printf "Today we are going to backup file to NFS server at AWS '%s'

" "/efs/my-blog-${today}.sql.tar.gz"

Sample outputs:

Today we are going to backup file to NFS server at AWS '/efs/my-blog-2020-02-29.sql.tar.gz'

Alternat syntax for command substitution is as follows:

var = ` date + "%FORMAT_STRING" ` now = ` date + "%m_%d_%Y" ` now = ` date + "%Y-%m-%d" ` echo " ${now} " var=`date +"%FORMAT_STRING"` now=`date +"%m_%d_%Y"` now=`date +"%Y-%m-%d"` echo "${now}"

Sample outputs:

2020-02-29

Now we can append the current date stored in $now to a filename as follows:

echo "Coping data to /tmp/filename-${now} ..."

date command FORMAT_STRING

FORMAT_STRING (FORMAT) controls the output. Interpreted sequences are as follows (taken from GNU/date man page)

%a – locale’s abbreviated weekday name (e.g., Sun)

– locale’s abbreviated weekday name (e.g., Sun) %A – locale’s full weekday name (e.g., Sunday)

– locale’s full weekday name (e.g., Sunday) %b – locale’s abbreviated month name (e.g., Jan)

– locale’s abbreviated month name (e.g., Jan) %B – locale’s full month name (e.g., January)

– locale’s full month name (e.g., January) %C – century; like %Y, except omit last two digits (e.g., 20)

– century; like %Y, except omit last two digits (e.g., 20) %d – day of month (e.g., 01)

– day of month (e.g., 01) %D – date; same as %m/%d/%y

– date; same as %m/%d/%y %F – full date; same as %Y-%m-%d

– full date; same as %Y-%m-%d %g – last two digits of year of ISO week number (see %G)

– last two digits of year of ISO week number (see %G) %G – year of ISO week number (see %V); normally useful only with %V

– year of ISO week number (see %V); normally useful only with %V %H – hour (00..23)

– hour (00..23) %I – hour (01..12)

– hour (01..12) %j – day of year (001..366)

– day of year (001..366) %m – month (01..12)

– month (01..12) %M – minute (00..59)

– minute (00..59) %n – a newline

– a newline %N – nanoseconds (000000000..999999999)

– nanoseconds (000000000..999999999) %p – locale’s equivalent of either AM or PM; blank if not known

– locale’s equivalent of either AM or PM; blank if not known %P – like %p, but lower case

– like %p, but lower case %q – quarter of year (1..4)

– quarter of year (1..4) %r – locale’s 12-hour clock time (e.g., 11:11:04 PM)

– locale’s 12-hour clock time (e.g., 11:11:04 PM) %R – 24-hour hour and minute; same as %H:%M

– 24-hour hour and minute; same as %H:%M %s – seconds since 1970-01-01 00:00:00 UTC

– seconds since 1970-01-01 00:00:00 UTC %S – second (00..60)

– second (00..60) %T – time; same as %H:%M:%S

– time; same as %H:%M:%S %u – day of week (1..7); 1 is Monday

– day of week (1..7); 1 is Monday %U – week number of year, with Sunday as first day of week (00..53)

– week number of year, with Sunday as first day of week (00..53) %V – ISO week number, with Monday as first day of week (01..53)

– ISO week number, with Monday as first day of week (01..53) %w – day of week (0..6); 0 is Sunday

– day of week (0..6); 0 is Sunday %W – week number of year, with Monday as first day of week (00..53)

– week number of year, with Monday as first day of week (00..53) %x – locale’s date representation (e.g., 12/31/99)

– locale’s date representation (e.g., 12/31/99) %X – locale’s time representation (e.g., 23:13:48)

– locale’s time representation (e.g., 23:13:48) %y – last two digits of year (00..99)

– last two digits of year (00..99) %Y – year

– year %z – +hhmm numeric time zone (e.g., -0400)

– +hhmm numeric time zone (e.g., -0400) %:z – +hh:mm numeric time zone (e.g., -04:00)

– +hh:mm numeric time zone (e.g., -04:00) %::z – +hh:mm:ss numeric time zone (e.g., -04:00:00)

– +hh:mm:ss numeric time zone (e.g., -04:00:00) %:::z – numeric time zone with : to necessary precision (e.g., -04, +05:30)

– numeric time zone with : to necessary precision (e.g., -04, +05:30) %Z – alphabetic time zone abbreviation (e.g., EDT)

Bash shell append date to filename in Linux or Unix

Finally, you can create a filename as follows:

#/bin/bash now =$ ( date + "%m_%d_%Y" ) echo "Filename : /nas/backup_ $now .sql" #/bin/bash now=$(date +"%m_%d_%Y") echo "Filename : /nas/backup_$now.sql"

Sample outputs:

Filename : /nas/backup_04_27_2010.sql

How do I add date to filename?

Here is a quick demo:



Append current date to filename shell script

You can create a shell script as follows:

#!/bin/bash # # Backup mysql/mariadb database ## Get current date ## _now =$ ( date + "%m_%d_%Y" ) ## Appending a current date from a $_now to a filename stored in $_file ## _file = "/nas/backup_ $_now .sql" ## Do it ## echo "Starting backup to $_file ..." mysqldump -u admin -p 'myPasswordHere' myDbNameHere > " $_file " ## Add more stuff below ## #!/bin/bash # # Backup mysql/mariadb database ## Get current date ## _now=$(date +"%m_%d_%Y") ## Appending a current date from a $_now to a filename stored in $_file ## _file="/nas/backup_$_now.sql" ## Do it ## echo "Starting backup to $_file..." mysqldump -u admin -p'myPasswordHere' myDbNameHere > "$_file" ## Add more stuff below ##

Conclusion

You learned how to add the date to a filename under Linux or Unix-like operating systems. For further information type the following man command:

man date