Posted 17 October 2012 - 11:46
Posted 17 October 2012 - 12:40
Posted 17 October 2012 - 18:35
#!/bin/bash
function random_chars ()
{
tmp=$( < /dev/urandom tr -dc A-Za-z1-9 | head -c $1 )
eval $2=$tmp
}
function create_abc ()
{
local rand=''
local file=$1'/abc.txt'
random_chars 200 rand
echo $rand > $file
echo $file
}
function create_1to9 ()
{
for i in 1 2 3 4 5 6 7 8 9
do
wd=$1'/'$i
mkdir $wd
echo $wd
create_abc $wd
create_yesno $wd 0
done
}
function create_answer ()
{
local answer=$1'/'$2
mkdir $answer
echo $answer
create_abc $answer
if [ $3 == 1 ]
then
create_1to9 $answer
fi
}
function create_yesno ()
{
create_answer $1 'yes' $2
create_answer $1 'no' $2
create_answer $1 'yesorno' $2
}
function create_dirs ()
{
local ret=''
for i in 1 2 3 4
do
random_chars 8 ret
dir=$1'/'$ret
mkdir $dir
echo $dir
create_abc $dir
create_yesno $dir 1
done
}
function main ()
{
create_dirs $1
}
main $1
./script targetdir
Posted 17 October 2012 - 20:34
That's about as efficient as using ice cream for a fire guardI have a background in C#/VB.NET, so that will influence my answer:
You'll need a few nested For-Next loops to create the exact number of directories you need. You'll also need a pseudo-random number generator to generate the random alphanumeric characters, and to make the "yes, no, or yesorno" directories. The 1-9 directories are easy.
If you're using .NET, use a TextWriter to write the text files.
Have fun!
Posted 17 October 2012 - 21:07
function random_chars ()
{
eval $2=$( < /dev/urandom tr -dc A-Za-z1-9 | head -c $1 )
}
Posted 23 October 2012 - 17:10
bash$ for i in $(seq 4); do mkdir `< /dev/urandom tr -dc A-Z0-9 | head -c8`; done
bash$ for i in `ls`; do `mkdir -p $i/{yes,no,yesorno}/{1..9} `; done
bash$ find . -type d -exec touch {}/abc.txt \;
Posted 23 October 2012 - 20:57
Thanks for your responses.. . .
I came up with following command sequence :::::::::::::bash$ for i in $(seq 4); do mkdir `< /dev/urandom tr -dc A-Z0-9 | head -c8`; done bash$ for i in `ls`; do `mkdir -p $i/{yes,no,yesorno}/{1..9} `; done bash$ find . -type d -exec touch {}/abc.txt \;
Now I am stuck at creating "yes,no,yesorno" directory in directories with name 1 - 9
This is what I tried ::
bash$ for i in $(find . -type d -name [1-9]); do `mkdir -p /{yes,no,yesorno}`;done
but its prompting with error "permission denied"
What am I missing?
for i in $(find . -type d -name [1-9]); do `mkdir -p $i/{yes,no,yesorno}`; done
Posted 28 October 2012 - 04:27
What's happening is you are trying to create the folders /yes, /no, and /yesorno, which are in the root directory of your filesystem. What you want is to modify that line to be
for i in $(find . -type d -name [1-9]); do `mkdir -p $i/{yes,no,yesorno}`; done
Basically, you're missing that $i which would make the {yes,no,yesorno} a subdirectory of your random folders as opposed to a subdirectory of the root directory.
for i in $(seq 4); do mkdir `< /dev/urandom tr -dc A-Z0-9 | head -c8`<&- 2>$HOME/error.txt; done
for i in `ls` ; do `mkdir -p $i/{yes,no,yesorno}/{1..9}` <&- 1>$HOME/output.txt 2>>$HOME/error.txt; done
for i in $(find . -type d -name [1-9]); do `mkdir -p $i/{yes,no,yesorno} <&- 1>$HOME/output.txt 2>>$HOME/error.txt `;done
for i in $(find . -type d); do `< /dev/urandom tr -dc A-Z0-9 | head -c200 > $i/abc.txt <&- 2>>$HOME/error.txt `; done
Posted 28 October 2012 - 17:58
for i in $(seq 4); do mkdir `< /dev/urandom tr -dc A-Z0-9 | head -c8`<&- 2>$HOME/error.txt; done; for i in `ls` ; do `mkdir -p $i/{yes,no,yesorno}/{1..9}` <&- 1>$HOME/output.txt 2>>$HOME/error.txt; done; for i in $(find . -type d -name [1-9]); do `mkdir -p $i/{yes,no,yesorno} <&- 1>$HOME/output.txt 2>>$HOME/error.txt `;done; for i in $(find . -type d); do `< /dev/urandom tr -dc A-Z0-9 | head -c200 > $i/abc.txt <&- 2>>$HOME/error.txt `; done
Posted 29 October 2012 - 01:31
'done' indicates the end of a loop, not the end of a command sequence. 'joining' the command should be as simple as placing them all on one line with semicolons between them. Based on the four commands you quoted in your last post, your final command should look something like this:
for i in $(seq 4); do mkdir `< /dev/urandom tr -dc A-Z0-9 | head -c8`<&- 2>$HOME/error.txt; done; for i in `ls` ; do `mkdir -p $i/{yes,no,yesorno}/{1..9}` <&- 1>$HOME/output.txt 2>>$HOME/error.txt; done; for i in $(find . -type d -name [1-9]); do `mkdir -p $i/{yes,no,yesorno} <&- 1>$HOME/output.txt 2>>$HOME/error.txt `;done; for i in $(find . -type d); do `< /dev/urandom tr -dc A-Z0-9 | head -c200 > $i/abc.txt <&- 2>>$HOME/error.txt `; done
for i in $(seq 4); do mkdir `< /dev/urandom tr -dc A-Z0-9 | head -c8`<&- 2>$HOME/error.txt; done;for i in `ls`; do `mkdir -p $i/{yes,no,yesorno}/{1..9}` <&- 1>$HOME/output.txt 2>>$HOME/error.txt; done;for i in $(find . -type d -name [1-9]); do `mkdir -p $i/{yes,no,yesorno}` <&- 1>$HOME/output.txt 2>>$HOME/error.txt; done;for i in $(find . -type d); do `< /dev/urandom tr -dc A-Z0-9 | head -c200 > $i/abc.txt` <&- 2>>$HOME/error.txt; done
Posted 29 October 2012 - 05:43
Posted 29 October 2012 - 23:35
mkdir -pv 'rar' 1>output.txt 2>&1