다음과 같은 디렉토리 구조가 있다고 가정하십시오.
$ [~ / 연습] ls a / b / c / d /
이제 tmp1
모든 하위 디렉토리에 디렉토리를 practice
만들고 싶습니다.
$ [~ / 연습] mkdir * / tmp1 mkdir :`* / tmp1 '디렉토리를 만들 수 없습니다 : 그러한 파일이나 디렉토리가 없습니다
그런 다음 -p
스위치를 시도하고 *
하위 디렉토리로 이름이 지정된 디렉토리로 끝납니다.tmp1
$ [~ / 연습] mkdir -p * / tmp1 $ [~ / 연습] ls * / a / b / c / d /
-p
존재하지 않는 디렉토리를 여러 개 만드는 것이 스위치 사용이라는 것을 알고 있습니다 . 나는 그것이 도움이 될 것이라고 생각했습니다.
tmp1
모든 서브 디렉토리에서 한 번에 작성하는 방법
이 작업을 수행 할 수있는 경우, 어떻게 그것을 만들 확장 할 \tmp1
, \tmp2
, \tmp3
에 \a
, \b
그리고 \c
한 번에?
편집 : 나는 디렉토리가 간단하고 순서 등이 될 필요가 없다는 언급 놓친 a
, b
, c
등, 그리고 생성 할 디렉토리와 같은 필요는 없다 tmp1
, tmp2
.
$ [~ / 연습] ls 개 / 고양이 / 쥐 /
그들에서, 나는 같은 것을 갖고 싶습니다
$ [~ / 연습] ls * 개: 빨강, 파랑/ 고양이: 빨강, 파랑/ 쥐: 빨강, 파랑/
답변
와 globs의 :
for dir in */; do mkdir -- "$dir/tmp1"; done
노트
- 나는
*/
글로브 로 사용하는 작은 해킹으로 다이어 (다이어리에 대한 심볼릭 링크 포함) 만 취급합니다. -
한 번에 여러 개의 하위 디렉토리를 작성하려면 다음을 수행하십시오.
for dir in */; do mkdir -- "$dir"/{tmp1,foo,bar,qux}; done
답변
[…] \ a, \ b 및 \ c에 \ tmp1, \ tmp2, \ tmp3을 한 번에 만들도록 어떻게 확장합니까?
mkdir {a,b,c}/tmp{1,2,3}
답변
GNU 또는 BSD *로 다음을 찾으십시오.
find -mindepth 1 -maxdepth 1 -type d -exec mkdir {}/newdir \;
또는 매개 변수 확장 사용 :
dirs=(*/)
mkdir -- "${dirs[@]/%/newdir}"
* OS X 포함
답변
을 언급 한 이후로 주제 bash
를 벗어 났지만 zsh를 사용하면 레코드에 대해 다음을 수행 할 수 있습니다.
dirs=(*(/))
mkdir -- $^dirs/tmp1
$^var
배열 확장을 위해 중괄호와 같은 확장을 켭니다 . rc
의 ^
연산자와 rc
(또는 그 파생어 es
)를 연상케 합니다.
dirs=(*/)
mkdir -- $dirs^tmp1
그러나 rc 솔루션 dirs
에는 디렉토리에 대한 심볼릭 링크도 포함되어 있습니다 ( 여기에 제공된 bash 솔루션에도 동일하게 적용됨) . zsh을 솔루션에서 변화 *(/)
를 *(-/)
원하는 경우는 디렉토리에 심볼릭 링크를 포함합니다.
답변
이식 가능하게 상위 디렉토리를 반복하십시오.
for d in */; do mkdir "$d/red" "$d/blue"; done
이름이로 시작하는 디렉토리가 있으면 --
뒤에 추가하십시오 .mkdir
-
zsh에서는 e
glob 한정자를 사용하여 단일 명령으로 수행 할 수 있습니다 .
mkdir *(/e\''REPLY=($REPLY/{red,blue})'\')
그러나 이것을 두 개의 명령으로 입력하는 것이 더 빠릅니다.
d=(*(/)); mkdir $^d/{red,blue}
답변
당신은 그렇게 할 수 있습니다 :
mkdir {a,b,c,d}/tmp1
답변
디렉토리가 아닌 파일을 피하는 sputnick의 답변 변형 :
for x in *; do if [ -d "$x" ]; then mkdir "$x/tmp1"; fi; done