텍스트 파일에서 폴더 및 하위 폴더 만들기

텍스트 파일에서 폴더 및 하위 폴더 만들기

텍스트 파일에서 새 디렉터리를 만드는 시나리오가 있습니다.

새 디렉터리.txt

/test/test1
/test/test1/test2

이 코드를 사용했지만 test1 하위 폴더가 두 개 생기는 경향이 있습니다.

while IFS="" read -r p || [ -n "$p" ]
    do 
      mkdir -p "$p" &&
      chmod -R 770 "$p"
    done < newDirectory.txt

테스트 홈 폴더가 이미 생성된 것으로 가정합니다. test1 폴더가 2개 있습니다. 하나에는 추가 "^M"(/test/test1^M)이 있지만 하위 폴더는 없고, 하나는 내부에 하위 폴더가 있는 예상 폴더(/test/test1/test2)가 있습니다.

생성된 폴더를 삭제할 때도 이 텍스트 파일을 참조해야 합니다.

while IFS="" read -r p || [ -n "$p" ]
    do 
      rm -rf $p
    done < newDirectory.txt

하지만 /test/test1/test2만 삭제되고 /test/test1은 여전히 ​​존재합니다. 감사해요

답변1

텍스트 파일에 DOS 줄 끝(CR+LF)이 포함될 수 있다는 알림을 받았으므로 UNIX 세계에서는 다음과 같습니다.

/test/test1^M
/test/test1/test2^M

^M사용 중인 편집기에 따라 캐리지 리턴이 표시되지 않습니다.

그러면 어떻게 되나요? 첫 번째 줄의 경우 ^M후행 캐리지 리턴이 포함된 폴더가 생성되고, 두 번째 줄은 test1옵션으로 인해 후행 캐리지 리턴이 없는 폴더가 생성됩니다.^M-p

그런 다음 삭제하면 해당 test1^M폴더와 하위 폴더도 삭제되지만 test1/test2^M자동으로 생성된 폴더에 대해서는 아무도 삭제를 요청하지 않았습니다 test1.

해결책: 잘못된 줄 끝을 제거하십시오. dos2unix가지고 있지 않다면 이용하세요 .

sed -i.bak 's/^M$//' newDirectory.txt

( ^M종류별로 입력한 ctrlV후 를 입력하세요 ctrlM).

참고로, 사용할 때 줄 안에 인용하는 것을 잊지 마세요 bash."$p"rm

관련 정보