Thursday 25 April 2013

How to format date for display or to use in a shell script

Q. How do I format date to display on screen on for my scripts as per my requirements?

A. You need to use standard date command to format date or time for output or to use in a shell script.

Syntax to specify format
date +FORMAT
Task: Display date in mm-dd-yy format
Type the command as follows:
$ date +"%m-%d-%y"
Output:
02-27-07     
Turn on 4 digit year display:
$ date +"%m-%d-%Y"
Just display date as mm/dd/yy format:
$ date +"%D"
Task: Display time only
Type the command as follows:
$ date +"%T"
Output:
19:55:04
Display locale’s 12-hour clock time
$ date +"%r"
Output:
07:56:05 PM
Display time in HH:MM format:
$ date +"%H-%M"
How do I save time/date format to a variable?
Simply type command as follows at a shell prompt:
$ NOW=$(date +"%m-%d-%Y")
To display a variable use echo / printf command:
$ echo $NOW
Sample shell script:
#!/bin/bash
NOW=$(date +"%m-%d-%Y")
FILE="backup.$NOW.tar.gz"
# rest of script Complete list of FORMAT control characters supported by date command
FORMAT controls the output.It can be the combination of any one of the following:
%%
a literal %
%a
locale's abbreviated weekday name (e.g., Sun)
%A
locale's full weekday name (e.g., Sunday)
%b
locale's abbreviated month name (e.g., Jan)
%B
locale's full month name (e.g., January)
%c
locale's date and time (e.g., Thu Mar 3 23:05:25 2005)
%C
century; like %Y, except omit last two digits (e.g., 21)
%d
day of month (e.g, 01)
%D
date; same as %m/%d/%y
%e
day of month, space padded; same as %_d
%F
full date; same as %Y-%m-%d
%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
%h
same as %b
%H
hour (00..23)
%I
hour (01..12)
%j
day of year (001..366)
%k
hour ( 0..23)
%l
hour ( 1..12)
%m
month (01..12)
%M
minute (00..59)
%n
a newline
%N
nanoseconds (000000000..999999999)
%p
locale's equivalent of either AM or PM; blank if not known
%P
like %p, but lower case
%r
locale's 12-hour clock time (e.g., 11:11:04 PM)
%R
24-hour hour and minute; same as %H:%M
%s
seconds since 1970-01-01 00:00:00 UTC
%S
second (00..60)
%t
a tab
%T
time; same as %H:%M:%S
%u
day of week (1..7); 1 is Monday
%U
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)
%w
day of week (0..6); 0 is Sunday
%W
week number of year, with Monday as first day of week (00..53)
%x
locale's date representation (e.g., 12/31/99)
%X
locale's time representation (e.g., 23:13:48)
%y
last two digits of year (00..99)
%Y
year
%z
+hhmm numeric timezone (e.g., -0400)
%:z
+hh:mm numeric timezone (e.g., -04:00)
%::z
+hh:mm:ss numeric time zone (e.g., -04:00:00)
%:::z
numeric time zone with : to necessary precision (e.g., -04, +05:30)
%Z

5 comments:

  1. how to find & see the particular date wise files in linux?

    ReplyDelete
  2. Use this command

    #ls -gR [dir path] | grep "Mon dd yyyy"

    Eg:

    root@orange-lpar:/tmp #ls -gR /tmp | grep "Sep 10 2010"
    -rw-r----- 1 system 6035456 Sep 10 2010 openssh.base
    -rw-r----- 1 system 262144 Sep 10 2010 openssh.license
    -rw-r----- 1 system 138240 Sep 10 2010 openssh.man.en_US
    -rw-r----- 1 system 23552 Sep 10 2010 openssh.msg.CA_ES
    -rw-r----- 1 system 22528 Sep 10 2010 openssh.msg.CS_CZ
    -rw-r----- 1 system 23552 Sep 10 2010 openssh.msg.DE_DE
    -rw-r----- 1 system 14336 Sep 10 2010 openssh.msg.EN_US
    -rw-r----- 1 system 23552 Sep 10 2010 openssh.msg.ES_ES
    -rw-r----- 1 system 17408 Sep 10 2010 openssh.msg.FR_FR
    -rw-r----- 1 system 22528 Sep 10 2010 openssh.msg.HU_HU
    -rw-r----- 1 system 22528 Sep 10 2010 openssh.msg.IT_IT
    -rw-r----- 1 system 25600 Sep 10 2010 openssh.msg.JA_JP

    ReplyDelete
  3. how to convert 10/02/15 to 2015-10-02 in unix??

    ReplyDelete
    Replies
    1. use below date command:
      [root@testbedrsm01 ~]# date +"%Y-%m-%d"
      2016-12-27

      Delete
  4. How to convert '6/09/17' to '06/09/17'

    ReplyDelete