Need help ...I want to create multiple directories in different /file systems using for loop..eg. ../ORCL_data01/oradata/orcl/ctl. ../ORCL_data01/oradata/orcl/data. ../ORCL_data01/oradata/orcl/redo.
Script :-
for dir in `ls -d /${ORACLE_SID}_data[0-9][0-9]`
do
mkdir -p $dir/oradata/${ORACLE_SID}/ctrl
mkdir -p $dir/oradata/${ORACLE_SID}/data
mkdir -p $dir/oradata/${ORACLE_SID}/redo
done
I'm getting the following error :-
ls -d /${ORACLE_SID}_data[0-9][0-9]
+ ls -d '/ORCL_data[0-9][0-9]'
ls: cannot access /ORCL_data[0-9][0-9]: No such file or directory
There is no need to create a sub shell and call ls the shell can expand the files for you.
Try:
for dir in /${ORACLE_SID}_data[0-9][0-9]
do
if [ -d "$dir" ]
then
mkdir -p "$dir/oradata/${ORACLE_SID}/ctrl"
mkdir -p "$dir/oradata/${ORACLE_SID}/data"
mkdir -p "$dir/oradata/${ORACLE_SID}/redo"
else
echo "/${ORACLE_SID}_dataNN dir(s) not found"
exit 1
fi
done
for dir in /${ORACLE_SID}_data[0-9][0-9]
do
if [ -d "$dir" ]
then
mkdir -p "$dir/oradata/${ORACLE_SID}/ctrl"
mkdir -p "$dir/oradata/${ORACLE_SID}/data"
mkdir -p "$dir/oradata/${ORACLE_SID}/redo"
else
echo "/${ORACLE_SID}_dataNN directories do not exist"
exit 1
fi
done
But i'm still getting same error...
Error :-
+ [ -d '/ORCL_data[0-9][0-9]' ]
+ echo '/ORCL_dataNN directories do not exist'
/ORCL_dataNN directories do not exist
+ exit 1
Note that mkdir with or without -p does not create new filesystems. The directories created by mkdir will always be in the same filesystem as the directory in which the parent directory resides.
To create new filesystems, you need mount , not mkdir .
RudiC, Thanks for your Reply ..The directory do exists.
[oracle@db1 ~]$ ls -d /ORCL_data[0-9][0-9]
/ORCL_data01
[oracle@db1 ~]$
[oracle@db1 /]$ ls /
app bin boot cgroup dev etc home lib lib64 lost+found media misc mnt net opt ORCL_archive01 ORCL_data01 ORCL_index01 ORCL_redo01 proc root sbin selinux srv sys tmp usr var
[oracle@db1 /]$
2) Thanks MadeInGermany for your reply..I have tried that option and it did not work too..
for dir in /${ORACLE_SID}_data{01,02,03}
do
if [ -d "$dir" ]
then
mkdir -p "$dir/oradata/${ORACLE_SID}/ctrl"
mkdir -p "$dir/oradata/${ORACLE_SID}/data"
mkdir -p "$dir/oradata/${ORACLE_SID}/redo"
else
echo "/${ORACLE_SID}_dataNN directories do not exist"
exit 1
fi
done
+ [ -d /pd1mds_data01 ]
+ echo '/pd1mds_dataNN directories do not exist'
/pd1mds_dataNN directories do not exist
+ exit 1