다른 폴더 안에 있는 폴더의 이름을 얻으려고 합니다. 아래 코드를 사용하려고 시도했지만 문제는 폴더 이름뿐만 아니라 폴더의 전체 주소를 반환한다는 것입니다.
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/
마지막으로, 디렉터리 이름에 개행 문자나 기타 이상한 내용이 포함될 수 있는 경우 다음을 사용하세요.