모든 하위 디렉터리에 디렉터리를 만드는 방법은 무엇입니까?

모든 하위 디렉터리에 디렉터리를 만드는 방법은 무엇입니까?

다음과 같은 디렉터리 구조가 있다고 가정해 보겠습니다.

$ [~/연습] ls
ABCD/

tmp1이제 모든 하위 디렉터리에 디렉터리를 만들고 싶습니다 practice. 다음을 수행합니다.

$ [~/연습] mkdir */tmp1
mkdir: `*/tmp1' 디렉토리를 생성할 수 없습니다: 해당 파일이나 디렉토리가 없습니다

그런 다음 전환을 시도했고 하위 디렉토리 이름을 딴 디렉토리 -p로 끝났습니다.*tmp1

$ [~/연습] mkdir -p */tmp1

$ [~/연습] ls
*/ABCD/

나는 스위치의 목적이 -p존재하지 않는 여러 디렉터리를 만드는 것임을 알고 있습니다. 나는 이것이 도움이 될 것이라고 생각했습니다.

tmp1동시에 모든 하위 디렉터리를 만드는 방법은 무엇입니까?

이것이 가능하다면 어떻게 확장하여 즉시 \tmp1, \tmp2, \tmp3in \a및 을 생성할 수 있습니까 \b?\c

편집하다:디렉토리가 , 등과 같이 단순하고 질서정연할 필요는 없으며 a, 생성될 디렉토리가 , 등과 같은 것일 필요는 없다는 점은 언급하지 않았습니다 .bctmp1tmp2

$ [~/연습] ls
개/고양이/쥐/

그 안에 나는 다음과 같은 것을 갖고 싶다

$ [~/연습] ls *
개:
빨강, 파랑/

고양이:
빨강, 파랑/

생쥐:
빨강, 파랑/

답변1

그리고구체:

for dir in */; do mkdir -- "$dir/tmp1"; done

노트

  • */나는 디렉토리(디렉토리에 대한 심볼릭 링크 포함)를 처리하기 위해 작은 트릭을 glob으로만 사용합니다.
  • 한 번에 여러 개의 하위 디렉터리를 생성하려면 다음을 수행하세요.

    for dir in */; do mkdir -- "$dir"/{tmp1,foo,bar,qux}; done

답변2

[...] \a, \b 및 \c에 \tmp1, \tmp2, \tmp3을 동시에 생성하려면 어떻게 이것을 확장할 수 있습니까?

 mkdir {a,b,c}/tmp{1,2,3}

답변3

GNU 또는 BSD*를 사용하여 다음을 찾으세요.

find -mindepth 1 -maxdepth 1 -type d -exec mkdir {}/newdir \;

또는 매개변수 확장을 사용하십시오.

dirs=(*/)
mkdir -- "${dirs[@]/%/newdir}"

*OS X 포함

답변4

이식 가능하게는 상위 디렉토리를 반복합니다.

for d in */; do mkdir "$d/red" "$d/blue"; done

이름이 로 시작하는 디렉토리가 있는 경우 --뒤에 추가하십시오.mkdir-

zsh에서는 다음을 사용하여 단일 명령으로 이 작업을 수행할 수 있습니다.e 글로벌 예선:

mkdir *(/e\''REPLY=($REPLY/{red,blue})'\')

그러나 두 가지 명령으로 입력하는 것이 더 빠릅니다.

d=(*(/)); mkdir $^d/{red,blue}

관련 정보