다음과 같은 디렉터리 구조가 있다고 가정해 보겠습니다.
$ [~/연습] ls ABCD/
tmp1
이제 모든 하위 디렉터리에 디렉터리를 만들고 싶습니다 practice
. 다음을 수행합니다.
$ [~/연습] mkdir */tmp1 mkdir: `*/tmp1' 디렉토리를 생성할 수 없습니다: 해당 파일이나 디렉토리가 없습니다
그런 다음 전환을 시도했고 하위 디렉토리 이름을 딴 디렉토리 -p
로 끝났습니다.*
tmp1
$ [~/연습] mkdir -p */tmp1 $ [~/연습] ls */ABCD/
나는 스위치의 목적이 -p
존재하지 않는 여러 디렉터리를 만드는 것임을 알고 있습니다. 나는 이것이 도움이 될 것이라고 생각했습니다.
tmp1
동시에 모든 하위 디렉터리를 만드는 방법은 무엇입니까?
이것이 가능하다면 어떻게 확장하여 즉시 \tmp1
, \tmp2
, \tmp3
in \a
및 을 생성할 수 있습니까 \b
?\c
편집하다:디렉토리가 , 등과 같이 단순하고 질서정연할 필요는 없으며 a
, 생성될 디렉토리가 , 등과 같은 것일 필요는 없다는 점은 언급하지 않았습니다 .b
c
tmp1
tmp2
$ [~/연습] 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}