Bash를 사용하여 디렉터리에서 폴더 이름을 검색하는 방법

Bash를 사용하여 디렉터리에서 폴더 이름을 검색하는 방법

다른 폴더 안에 있는 폴더의 이름을 얻으려고 합니다. 아래 코드를 사용하려고 시도했지만 문제는 폴더 이름뿐만 아니라 폴더의 전체 주소를 반환한다는 것입니다.

for folder in /[my folder]/*; do cat $folder;  done

이것으로 나는 /[my folder]/subfolder1내가 기대했던 것이 정확히 무엇인지 이해합니다 subfolder1.

감사해요

답변1

cat단순히 입력 스트림이나 파일을 가져와 표준 출력으로 인쇄하는 프로그램입니다. 디렉토리를 사용할 수 없습니다 cat. 이는 의미가 없습니다. 특정 디렉터리의 모든 첫 번째 수준 하위 디렉터리 이름을 보고 싶다면 echo이를 사용하여 제공한 내용을 간단히 인쇄할 수 있습니다.

$ for dir in foo/*/; do echo "$dir"; done
foo/dir1/
foo/dir2/
foo/dir3/
foo/dir4/

루프도 필요하지 않습니다.

$ echo foo/*/
foo/dir1/ foo/dir2/ foo/dir3/ foo/dir4 

경로 없이 디렉터리 이름만 가져옵니다.

$ for dir in foo/*/; do basename "$dir"; done
dir1
dir2
dir3
dir4

또는 cd다음 경로에 액세스할 수 있습니다.

$ cd foo
$ echo */
dir1/ dir2/ dir3/ dir4/

또는 cd하위 셸에서 명령이 완료될 때 있던 위치를 유지합니다.

$ ( cd foo && echo */ )
dir1/ dir2/ dir3/ dir4/

또는 별도의 줄에 입력하고 이상한 디렉토리 이름(예: 개행 문자가 포함된 이름)에서도 작동하는지 확인하세요.

    $ ( cd foo && printf -- '%s\n' */ ) 
    dir1/
    dir2/
    dir3/
    dir4/
    

마지막으로, 디렉터리 이름에 개행 문자나 기타 이상한 내용이 포함될 수 있는 경우 다음을 사용하세요.

관련 정보