2017-03-13 4 views
3

디렉토리를 만들 필요가있는 파일에 이름 목록이 있습니다. 내가 공백 (들)을 보존 정확한 동일하게 폴더를 필요 목록에서 공백을 보존하는 디렉토리 만들기

Ada Lovelace 
Jean Bartik 
Leah Culver 

같은 목록이 보인다. 그러나

awk '{print $0}' myfile | xargs mkdir 

와 내가

Ada 
Lovelace 
Jean 
Bartik 
Leah 
Culver 

같은 각 단어에 대해 별도의 폴더를 생성 어디에 오류가

awk '{print $1 " " $2}' myfile | xargs mkdir 

과됩니까?

답변

3

gnu xargs을 사용하면 -d 옵션을 사용하여 구분 기호를 \n으로 설정할 수 있습니다. 이렇게하면 awk도 피할 수 있습니다. 제공 INPUT_FILE 완전히 샘플을 기반으로 :

tr '\n' '\0' < file | xargs -0 mkdir 
2

@birgit : 시도는 gnu xargs이없는 경우

xargs -d '\n' mkdir -p < file 

당신은 모든 \n 처음 \0로 변환 tr를 사용할 수 있습니다.

awk -vs1="\"" 'BEGIN{printf "mkdir ";}{printf("%s%s%s ",s1,$0,s1);} END{print ""}' Input_file | sh 
2
awk '{ system (sprintf("mkdir \"%s\"", $0)) }' YourFile 
# OR 
awk '{ print"mkdir "\"" $0 "\"" | "/bin/sh" }' YourFile 
# OR for 1 subshell 
awk '{ Cmd = sprintf("%s%smkdir \"%s\"", Cmd, (NR==1?"":"\n"), $0) } END { system (Cmd) }' YourFile 
  • 마지막 버전은 1 서브 쉘의 생성에 더 나은 때문이다.
  • 엄청난 양의 폴더 (셸 매개 변수 제한)가있는 경우 반복적으로 더 작은 명령을 반복하여 만들 수 있습니다.