Verifique recursivamente se existem diretórios em um caminho

2

Eu quero verificar recursivamente se existem diretórios em um determinado caminho; se não, eu quero criá-los. Portanto, se eu tiver o caminho /dir1/dir2/dir3/dir4 , se quiser verificar primeiro se dir1/ existe e, se não, crie-o, faça o mesmo para dir2/ etc.

    
por MBR 20.09.2013 / 14:02

2 respostas

8

Você pode informar apenas mkdir para criar os caminhos com a opção -p :

$ mkdir -p /dir1/dir2/dir3/dir4

excerto da página de manual mkdir

   -p, --parents
          no error if existing, make parent directories as needed

Referências

por 20.09.2013 / 14:04
0

Eu encontrei uma solução usando cut e while -loop

#!/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

Existe uma maneira mais compacta de fazer isso?

    
por 20.09.2013 / 14:02