2011-01-17 6 views
10
"B"디렉토리에있는 "A"디렉토리의

"터치"를 사용하여 디렉토리를 만드시겠습니까?

find . -type f > a.txt 

2) : "파일"을 만듭니다. 동일한 파일 이름이지만 0 바이트 크기] ok. 그러나 "A"디렉토리에 하위 디렉토리가있는 경우 하위 디렉토리에 파일이 없으므로 2) 하위 디렉토리에 파일을 만들 수 없습니다.

질문 : touch에서 디렉토리를 만들 수있는 방법이 있습니까?

+0

크로스 게시 : http://superuser.com/questions/234185/using-touch-to-create-directories –

+3

@Peter : 10 개의 질문, 8 개의 대답. StackOverflow 및 수퍼 유저 모두에서 0 점을 수락하고 0 점을 상향 표시합니다. 그리고 지금은 크로스 - 포스트. 한숨 ... – thkala

+0

다른 [cross-post] (http://serverfault.com/questions/223267/using-touch-to-create-directories). 제발 그만 하지마. –

답변

9

find 이후 출력 라인 당 하나 개의 파일을

cat a.txt | while read file; do 
    if [[ "$file" = */* ]]; then 
     mkdir -p "${file%/*}"; 
    fi; 

    touch "$file"; 
done 

EDIT이 약간 더 효율적일 것이다

별도의 단계에서 생성 한 디렉토리 경우 :

cat a.txt | grep/| sed 's|/[^/]*$||' | sort -u | xargs -d $'\n' mkdir -p 

cat a.txt | while read file; do 
    touch "$file"; 
done 

그리고 아니요, touch은 자체적으로 디렉토리를 만들 수 없습니다.

0

아니요. 왜 디렉토리를 터치하는 대신 mkdir을 사용하지 않으시겠습니까?

+28

필요한 디렉토리를 만든 다음 파일을 만드는 것이 유용 할 것입니다. 동일한 목적을 달성하기 위해 2 개의 명령을 실행하는 것보다 쉽습니다. 리눅스이고 똑똑 할 것으로 기대합니다.) –

관련 문제