shell - todos - unix copiar archivos




¿Cómo mkdir sólo si un directorio no existe ya? (9)

Definiendo árboles de directorios complejos con un comando

mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

Estoy escribiendo un script de shell para ejecutar bajo KornShell (ksh) en AIX. Me gustaría usar el comando mkdir para crear un directorio. Pero el directorio ya puede existir, en cuyo caso no quiero hacer nada. Así que quiero probar si el directorio no existe o suprimir el error "El archivo existe" que mkdir lanza cuando intenta crear un directorio existente.

¿Alguna idea sobre la mejor manera de hacer esto?


El viejo probado y verdadero

mkdir /tmp/qq >/dev/null 2>&1

hará lo que quiera sin ninguna de las condiciones de carrera que muchas de las otras soluciones tienen.

A veces las soluciones más simples (y las más feas) son las mejores.


Esto debería funcionar:

$ mkdir -p dir

o:

if [[ ! -e $dir ]]; then
    mkdir $dir
elif [[ ! -d $dir ]]; then
    echo "$dir already exists but is not a directory" 1>&2
fi

que creará el directorio si no existe, pero le avisará si el nombre del directorio que está tratando de crear ya está en uso por algo distinto a un directorio.


O si quieres verificar la existencia primero:

if [[ ! -e /path/to/newdir ]]; then
            mkdir /path/to/newdir
fi

-e es la prueba de existencia para shell korn.

También puede intentar googlear un manual de shell korn.


Puede usar if loop para verificar si el directorio existe o no, si no existe, que crear el directorio.

1) dir = / home / dir_name

if [ ! -d $dir ]
then
     mkdir $dir
else
     echo "Directory exists"  
fi

2) Puede usar el directorio mkdir con la opción -p para crear un directorio. Verificará si el directorio no está disponible.

mkdir -p $dir

mkdir -p también permite crear la estructura de árbol del directorio. Si desea crear los directorios padre e hijo con el mismo comando, puede optar por mkdir -p

mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2

Si no quieres mostrar ningún mensaje de error:

[ -d newdir ] || mkdir newdir

Si desea mostrar su propio mensaje de error:

[ -d newdir ] && echo "Directory Exists" || mkdir newdir

mkdir ya no admite el cambio -p en los sistemas Windows 8+.

Puedes usar esto:

IF NOT EXIST dir_name MKDIR dir_name

mkdir foo funciona incluso si el directorio existe. Para que funcione solo si el directorio llamado "foo" no existe, intente usar la -p .

Ejemplo: -

mkdir -p foo

Esto creará el directorio llamado "foo" solo si no existe. :)


mkdir -p sam
  • mkdir = Make Directory
  • -p = - padres
  • (no hay error si existe, hacer directorios padre según sea necesario)




mkdir