etc./StackOverFlow

디렉토리가 이미 존재하지 않는 경우에만 mkdir하는 방법은 무엇입니까?

청렴결백한 만능 재주꾼 2021. 11. 29. 22:34
반응형

질문자 :Spike Williams


AIX의 KornShell(ksh)에서 실행할 쉘 스크립트를 작성 중입니다. mkdir 명령을 사용하여 디렉토리를 만들고 싶습니다. 그러나 디렉토리가 이미 존재할 수 있으며 이 경우 아무 것도 하고 싶지 않습니다. mkdir 이 기존 디렉토리를 생성하려고 할 때 발생하는 "파일이 있습니다" 오류를 억제하고 싶습니다.

이 작업을 가장 잘 수행하려면 어떻게 해야 합니까?



mkdir -p 시도:

 mkdir -p foo

이것은 존재하지 않는 중간 디렉토리도 생성합니다. 예를 들어,

 mkdir -p foo/bar/baz

foo , foo/bar , foo/bar/baz 디렉토리가 존재하지 않으면 생성합니다.

mkdir 과 같은 일부 구현 mkdir --parents 가 더 읽기 쉬운 별칭으로 포함되지만 이는 POSIX/Single Unix 사양에 지정되지 않았으며 macOS, 다양한 BSD 및 다양한 상용 Unix와 같은 많은 공통 플랫폼에서 사용할 수 없으므로 피해야 합니다. .

상위 디렉토리가 존재하지 않을 때 오류를 원하고 디렉토리가 존재하지 않는 경우 생성하려면 먼저 디렉토리의 존재를 test

 [ -d foo ] || mkdir foo

Brian Campbell

이것은 작동해야 합니다:

 $ mkdir -p dir

또는:

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

존재하지 않는 경우 디렉토리를 생성하지만 생성하려는 디렉토리의 이름이 디렉토리가 아닌 다른 곳에서 이미 사용 중인 경우 경고합니다.


Alnitak

-p 플래그를 사용하십시오.

 man mkdir mkdir -p foo

jimmyorr

하나의 명령으로 복잡한 디렉토리 트리 정의

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

Oleg

오류 메시지를 표시하지 않으려면:

 [ -d newdir ] || mkdir newdir

자신의 오류 메시지를 표시하려면:

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

Jahid

오래된 시도와 진실

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

다른 많은 솔루션이 가지고 있는 경쟁 조건 없이 원하는 작업을 수행합니다.

때로는 가장 단순한(가장 못생긴) 솔루션이 가장 좋습니다.


Community Wiki

mkdir foo 는 디렉토리가 존재하더라도 작동합니다. "foo"라는 디렉토리가 존재하지 않는 경우에만 작동하도록 하려면 -p 플래그를 사용해 보십시오.

예시:

 mkdir -p foo

존재하지 않는 경우에만 "foo"라는 디렉토리를 생성합니다. :)


Atul Ranjan

mkdir은 Windows 8+ 시스템에서 더 이상 -p 스위치를 지원하지 않습니다.

다음을 사용할 수 있습니다.

 IF NOT EXIST dir_name MKDIR dir_name

Karanvir Kang

directory_name = "foo" if [ -d $directory_name ] then echo "Directory already exists" else mkdir $directory_name fi

Visuwa Bharathi K

if 문을 사용하여 디렉토리가 있는지 여부를 확인할 수 있습니다. 종료되지 않으면 디렉토리를 작성하십시오.

  1. 디렉토리=/홈/디렉토리 이름

     if [ ! -d $dir ] then mkdir $dir else echo "Directory exists" fi
  2. mkdir을 -p 옵션과 함께 사용하여 디렉토리를 생성할 수 있습니다. 디렉토리를 사용할 수 없는지 확인합니다.

     mkdir -p $dir

    mkdir -p는 디렉토리의 트리 구조를 생성할 수도 있습니다. 동일한 명령을 사용하여 상위 및 하위 디렉토리를 생성하려면 mkdir -p를 선택할 수 있습니다.

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

AbhinavVaidya8

옵션에 대한 man 페이지 man mkdir p

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

주어진 경로에 모든 디렉토리를 생성합니다. 존재하는 경우 오류가 발생하지 않으면 주어진 경로에서 왼쪽에서 오른쪽으로 모든 디렉토리를 생성합니다. 아래 명령을 시도하십시오. 이 명령을 실행하기 전에는 newdiranotherdir 디렉토리가 존재하지 않습니다.

올바른 사용법

mkdir -p /tmp/newdir/anotherdir

명령을 실행한 후 /tmp 아래에 생성된 newdiranotherdir 이 명령은 원하는 만큼 실행할 수 있습니다. 명령에는 항상 exit(0) 있습니다. 이러한 이유로 대부분의 사람들은 실제 경로를 사용하기 전에 쉘 스크립트에서 이 명령을 사용합니다.


vkrams

또는 먼저 존재를 확인하려면 다음을 수행하십시오.

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

-e 는 KornShell에 대한 존재 테스트입니다.

KornShell 설명서를 검색해 볼 수도 있습니다.


alkar

디렉토리가 존재하지 않는 경우 디렉토리를 생성할 수 있는 간단한 기능(Bash 셸)입니다.

 #------------------------------------------# # Create a directory if it does not exist. # #------------------------------------------# # Note the "-p" option in the mkdir # # command which creates directories # # recursively. # #------------------------------------------# createDirectory() { mkdir -p -- "$1" }

위의 함수를 다음과 같이 호출할 수 있습니다.

createDirectory "$(mktemp -d dir-example.XXXXX)/fooDir/BarDir"

위는 fooDir 및 BarDir이 존재하지 않는 경우 생성합니다. 재귀적으로 디렉토리를 생성하는 mkdir 명령의 "-p" 옵션에 유의하십시오.


Balaji Boggaram Ramanarayan

mkdir -p sam
  • mkdir = 디렉토리 만들기
  • -p = --부모
  • (존재하는 경우 오류 없음, 필요에 따라 상위 디렉토리를 만드십시오)

Paritosh Yadav

if [ !-d $dirName ];then if ! mkdir $dirName; then # Shorter version. Shell will complain if you put braces here though echo "Can't make dir: $dirName" fi fi

Alex Zubkov

간단하고 조용하며 치명적입니다.

 mkdir -p /my/new/dir >/dev/null 2>$1

moodboom

출처 : http:www.stackoverflow.com/questions/793858/how-to-mkdir-only-if-a-directory-does-not-already-exist

반응형