폴더/디렉터리의 내용을 재귀적으로 나열(ls)하는 방법은 무엇입니까? 단 하나의 폴더/디렉터리만 포함되어 있습니까?

폴더/디렉터리의 내용을 재귀적으로 나열(ls)하는 방법은 무엇입니까? 단 하나의 폴더/디렉터리만 포함되어 있습니까?

폴더/디렉터리의 내용을 재귀적으로 나열(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 위)로 돌아갑니다.

관련 정보