我想递归地检查给定路径中的目录是否存在;如果没有,我想创造它们。因此,如果我有路径/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
-loopwhile
#!/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
有没有更紧凑的方法来做到这一点?