递归检查路径中的目录是否存在

递归检查路径中的目录是否存在

我想递归地检查给定路径中的目录是否存在;如果没有,我想创造它们。因此,如果我有路径/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

有没有更紧凑的方法来做到这一点?

相关内容