폴더/디렉터리의 내용을 재귀적으로 나열(ls)하는 방법은 무엇입니까? 단 하나의 폴더/디렉터리만 포함되어 있습니까?
다음과 같은 폴더 구조가 있습니다.
folderA:
folderB1:
folderC1:
fileD1:
fileD2:
fileC2
fileC3
folderB2:
folderC4:
fileD3:
fileD4:
fileC5
fileC6
저는 상위 폴더에 있고 folderA
그 안에 있는 모든 항목과 그 하위 폴더를 나열하고 싶지만 하위 하위 폴더는 나열하고 싶지 않습니다. 그래서 나는 보고 싶다:
folderB1/folderC1
folderB1/fileC2
folderB1/fileC3
folderB2/folderC2
folderB2/fileC4
folderB2/fileC5
그게 가능합니까? 현재 이 기능을 사용하면 ls -R folderA
관심이 없는 수백 개의 하위 폴더가 있는 토끼굴에 빠져들게 됩니다. 나는 어느 정도 깊이에서 멈추고 싶다. 이상적으로는 depth 1
폴더A와 해당 하위 폴더의 내용을 나열하고 중지하는 것과 같은 옵션이 있습니다 .
저는 macOS X High Sierra에서 작업하고 있습니다.
답변1
넌 하나도 원하지 않아재귀적글쎄, 보시다시피 재귀는 "임의의 중지 지점"이 아니라 "끝까지"를 의미하기 때문입니다.
폴더A의 상위 폴더A 아래에 두 레벨을 나열하려면 다음을 수행하십시오.
(cd folderA && ls -d -- */*)
이에 대한 핵심은 */*
와일드카드/와일드카드입니다. 이를 위해서는 쉘이 모든 직접 하위 디렉토리( */
)를 생성한 다음 모든 항목(마지막 *
)을 생성해야 합니다.
ls
우리가 말하는 것이 중요합니다아니요마지막 항목이 디렉토리인 경우 -d
플래그를 사용하여 이를 확장합니다.
마지막 부분에서는 원하는 출력 형식을 얻기 위해 서브셸을 시작하여 문제를 해결하고 cd
목록을 위해 폴더A로 이동합니다. 종료 되면 ls
하위 쉘이 종료되고 현재 프롬프트와 디렉터리(폴더 A 위)로 돌아갑니다.