
与えられたパスにディレクトリが存在するかどうかを再帰的に確認したいと思います。存在しない場合は、ディレクトリを作成したいと思います。したがって、ルートがある場合は/dir1/dir2/dir3/dir4
最初にルートがあることを確認しdir1/
、それ以外の場合はルートを作成してからdir2/
ピアに対して同じことを行います。
答え1
mkdir
スイッチを使用して作成するパスを指定します-p
。
$ mkdir -p /dir1/dir2/dir3/dir4
mkdir
マニュアルページから抜粋
-p, --parents
no error if existing, make parent directories as needed
引用する
答え2
解決策が見つかりました。cut
-loopを使用してください。while
#!/bin/bash
RUNDIR=$1
n=2
TMPDIR=
while [ $(echo $RUNDIR | cut -d '/' -f$(printf $n)) ]; do
TMPDIR=$TMPDIR'/'$(echo $RUNDIR | cut -d '/' -f$(printf $n))
if [ -a $TMPDIR ]; then
echo $TMPDIR' exists'
else
echo $TMPDIR' does not exist; creating directory...'
mkdir $TMPDIR
fi
n=$(printf $(($n + 1)))
done
これを行うより簡単な方法はありますか?