Trying to add a zero before the varaible if it\'s less than 10 and create said directory. I can\'t seem to get the zero to add correctly. Keeps resulting in making 02.1.20
Will this work for you?
zeroes="0000000"
pad=$zeroes$i
echo ${pad:(-2)}
Here's what I did for a script where I'm asking for a day, range of days, regex, etc. with a default to the improved regexes shared by paxdiablo.
for day in $days
do if [ 1 -eq "${#day}"] ; then
day="0$day"
fi
I just run through this at the beginning of my loop where I run a bunch of log analysis on the day in question, buried in directories with leading zeroes.
path=/tmp
ruby -rfileutils -e '1.upto(31){|x| FileUtils.mkdir "'$path'/02.%02d.2011" % x}'
In Bash 4, brace range expansions will give you leading zeros if you ask for them:
for i in {01..31}
without having to do anything else.
If you're using earlier versions of Bash (or 4, for that matter) there's no need to use an external utility such as seq
:
for i in {1..31}
or
for ((i=1; i<=31; i++))
with either of those:
mkdir "$path/02.$(printf '%02d' "$i").2011"
You can also do:
z='0'
mkdir "$path/02.${z: -${#i}}$i.2011"
Using paxdiablo's suggestion, you can make all the directories at once without a loop:
mkdir "$path"/02.{0{1..9},{10..31}}.2011