In Linux shell, am I able to create a directory but the name would be a string returned from another program? And if I am able, how to?

In particular I am asked to create a new directory in my Home, and its name would be the minute on my computer's clock. Let's suppose /home/john/01/, 01 is the minutes on my clock.

I was thinking something like pipeline date +"%M" | mkdir but I do not know how I am gonna put that returned number into the mkdir program.

Finally another idea came to my mind, something like this mkdir (date +"%M") but this as well is a mistake. Any help please?


4 Answers 4


The concept you're looking for is command substitution, which uses the syntax $(command)

mkdir /home/john/$(date +%M)

You may also see the older 'backtick' syntax, `command`

  • another way could be piping the output of date command into a mkdir command with xargs date +%M | xargs mkdir Commented Mar 28 at 7:57

mkdir $(date +%Y%m%d) or I personally use mkdir $(date +%Y%m%d_%H%M%S) for hh:mm:ss. date --help will give you the different formats if you need something more.

  • This is the correct answer imo because it has the layout of yyymmdd etc.
    – Mike Q
    Commented Mar 9, 2022 at 18:07

You can do it easily using following command:

$ min=$(date +"+%M"); mkdir $min
  • 3
    Also a nice way, good to know that you can declare a variable and then give that value to mkdir program, thanks! :)
    – Mr T
    Commented Dec 31, 2015 at 16:31

You can do that by typing the following command:

mkdir ~/$(date | awk -F':' '{print $2}')

The command creates a directory in home folder and gives the current minute as name.

  • 1
    Thanks a lot, that way works as well but its a little bit complicated for me!!
    – Mr T
    Commented Dec 31, 2015 at 16:31

Not the answer you're looking for? Browse other questions tagged .