다음 디렉토리가 현재 디렉토리 내에있는 A에서 Z까지 디렉토리 트리를 만들려고합니다.
예를 들어 : B는 A 내에 있고 C는 B 안에 있습니다.
-A
--B
---C
----...Z
자동화 된 방법을 얻는 방법에 대한 단서가 있습니까?
mkdir -p
" 를 검색하여 찾을 수있는 특정 디렉토리 구조를 만드는 방법에 대해서도 많은 질문이 있습니다 .)
다음 디렉토리가 현재 디렉토리 내에있는 A에서 Z까지 디렉토리 트리를 만들려고합니다.
예를 들어 : B는 A 내에 있고 C는 B 안에 있습니다.
-A
--B
---C
----...Z
자동화 된 방법을 얻는 방법에 대한 단서가 있습니까?
mkdir -p
" 를 검색하여 찾을 수있는 특정 디렉토리 구조를 만드는 방법에 대해서도 많은 질문이 있습니다 .)
답변:
과 bash의 괄호 확장을 사용 mkdir
하면 다음 printf
과 같습니다.
$ mkdir -p "$(printf "%s/" {A..Z})"
$ tree A
A
└── B
└── C
└── D
└── E
└── F
└── G
└── H
└── I
└── J
└── K
└── L
└── M
└── N
└── O
└── P
└── Q
└── R
└── S
└── T
└── U
└── V
└── W
└── X
└── Y
└── Z
25 directories, 0 files
{A..Z}
에 확장 A B ... Z
,printf "%s/"
/
뒤에 인수를 사용하여 인수를 인쇄 하므로A/B/...Z/
mkdir -p
생성 A/B/.../Z
생성 필요한 부모 디렉토리와 디렉토리를.-p
에서 mkdir
명령.
매우 간단한 수준에서 {A..Z}
확장을 사용하여 모든 문자를 생성 한 다음 반복적으로 각 문자를 만들고 입력 할 수 있습니다.
~/test_directory$ for d in {A..Z}; do mkdir "$d"; cd "$d"; done
~/test_directory/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z$
내 프롬프트 출력에서 볼 수 있듯이 이제 완전히 연결된 디렉토리가 있습니다.
그러나 실제 디렉토리 이름이 알파벳과 다른 경우 파일을 통해 디렉토리 이름 목록을 제공해야합니다. 파일을 통해 동일한 프로세스를 반복하고 다시 수행해야합니다. 기본적으로이
while IFS= read -r dir_name;do mkdir "$dir_name"; cd "$dir_name" ;done < directory_list.txt
for d in {A..Z}; do mkdir "$d"; cd "$d"; for i in {1..100}; do mkdir "${d}${i}" ;done ; done
for d in {A..Z}; do mkdir "$d"; cd "$d"; mkdir "$d"{1..100}; done
tree
문제를 해결하는 방법을 잘 모르겠지만 이것이 tree
문제가 아니라 쉘의 정렬 순서 라고 생각합니다 . 나는 여기에 또는 더 나은 unix.stackexchange.com에 대한 실제 질문을 제안하는 것이 좋습니다
비록 muru의 printf
방법은 , 내가 개인적으로 좋아 이길 수없는 jot
것은 이런 종류의합니다. jot
우분투에는 기본적으로 설치되어 있지 않습니다. athena-jot
패키지를 제공합니다. 다음 명령 중 하나가 작동합니다.
mkdir -p "$(jot -s/ -c 26 A)"
jot -s/ -c 26 A | xargs mkdir -p
출력은 다음에 전달 될 수 있기 때문에 정말 문자의 시퀀스를 생성하고 슬래시로 합류 모든 명령이 용이합니다 mkdir -p
통해서 명령 치환 (같이 muru의 대답 ) 또는 사용 xargs
. 다음은 몇 가지 도구를 사용하는 예이며 xargs
매우 작은 시스템이나 Ubuntu Core를 제외하고는 소프트웨어를 설치할 필요가 없습니다.
perl -we 'print join "/", A..Z' | xargs mkdir -p
ruby -we 'print (?A..?Z).to_a * ?/' | xargs mkdir -p
python3 -c 'print("/".join(__import__("string").ascii_uppercase))' | xargs mkdir -p
오래된 우분투 버전은 변경, 파이썬이 대신 그 내용은 파이썬 3와 함께 python3
하는 python
당신이 정말 파이썬이 작업을 수행하려면, 마지막 명령 작업을 할 수 있습니다.
마찬가지로 muru의 짧고 간단한 방법 은 다음 과 같이 작성할 수 있습니다.
printf '%s/' {A..Z} | xargs mkdir -p
/
디렉토리 경로에서 후행 mkdir -p
을 작성하도록 요청하면 아무런 문제가 없으며 문체 적으로 바람직합니다. 그러나이 답변의 다른 예와 마찬가지로 생략해도 좋습니다.