ls는 전체 디렉토리 트리를 탐색하여 파이프될 수 있는 파일 목록을 생성합니다.

ls는 전체 디렉토리 트리를 탐색하여 파이프될 수 있는 파일 목록을 생성합니다.

이에 대한 답은 이미 있을 수도 있습니다. 그러나 나는 그것을 찾을 수 없었다.

나는 가지고있다:

directory
directory/subdirectory/subdirectoryofsubdirectory
directory/sub-subdirectory/subdirectoryofsub-subdirectory/subdirectoryofsubdirectoryofsub-subdirectory
directory/sub-sub-subdirectory
directory/sub-sub-sub-subdirectory

모든 디렉터리와 하위 디렉터리에는 파일이 포함되어 있습니다. 나는 그것들을 모두 나열하고 목록을 cat으로 파이프한 다음 목록을 텍스트 파일로 파이프하고 싶습니다. "한 줄"로 이 작업을 수행할 수 있습니까? 그렇다면 제공해 주십시오. 아니면 스크립팅이 필요합니까? 그렇다면 스크립팅을 위해 어떤 명령/구조가 필요합니까?

답변1

최선의 선택은 find명령이라고 생각합니다. 디렉터리가 아닌 목록의 파일만 원하는 경우 다음과 같습니다.

find directory/ -type f -print > textfile

find 명령은 파일을 재귀적으로 나열합니다. (디렉토리도 나열하려면 제거하십시오 -type f). > textfilecat 없이 stdout을 textfile이라는 파일로 리디렉션합니다 .

find다양한 옵션을 갖춘 강력한 도구입니다. man find출력을 약간 조정해야 하는지 확인하십시오 .

고쳐 쓰다(감사해요wxya):

당신이 원한다면콘텐츠파일을 단일 텍스트 파일로 병합하려면 다음 중 한 가지 방법을 사용하세요.

find Documents/ -type f -exec cat {} + > textfile

답변2

find다음과 같은 일반적인 방법입니다.스티븐 D의 답변설명하다. 쉘이 이를 지원하는 경우 **여러 하위 디렉토리를 일치시키는 데 사용할 수 있습니다(bash에서는 *기본값과 동일하며 하나의 하위 디렉토리만 일치하지만 Dennis의 설명 참조). 따라서 다음을 수행할 수 있습니다.

cat **/*

관련 정보