Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

when I want to touch files like report-05/07/13 with command touch report-$(date +%D) it gives me an error like this:

touch: cannot touchreport-07/05/13': No such file or directory`

How can I build one?

By the way there is "NO FOLDER" it is JUST THE FILENAME.

share|improve this question
Did the folder report-07/ exist? – uprego Jul 5 '13 at 6:44
up vote 2 down vote accepted

the / sign is for path separator.

When you execute that command the result will be

report-07/05/13 but the shell will interpret like this

report-07 - Parent Directory 
05 - subdirectory
03 - filename

If indeed you want the directory report-07/05 then first you need to create it with:

mkdir -p report-`date +%m\/%d`
touch report-`date +%D`

If you want is just a file named date-M.D.Y then it will be easier to change the separator

touch report-`date +%m.%d.%y`
share|improve this answer
if i want to use / instead of . can i use \/? – Hojat Taheri Jul 5 '13 at 7:10
no really, it will still search for the directory. # touch test\/test touch: cannot touch ‘test/test’: No such file or directory – BitsOfNix Jul 5 '13 at 7:13

touch can only create files, not directories. You have to create the directory first e.g. by calling mkdir -p $(dirname report-$(date +%D)).

The -p stands for parent and creates all missing directories in the given path. And dirname will strip of the last component of a path, passing only the directory to mkdir.

share|improve this answer

Forward slashes are path separators in Unix, and as such cannot be used as part of a filename. If your specification is actually a full path, you can do this:

file=report-$(date +%D)
mkdir -p "${file%/*}"
touch "$file"
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.