답변:
find
이 모든 것을 스스로 할 수 있습니다.
find X -path '*/inc/*' -type d > list
자세한 내용은 -path
부분을 읽으십시오 man find
.
주석에서 빠르게 언급했듯이 디렉토리 줄을 텍스트 파일로 구분하여 저장하면 줄 바꿈이 포함 된 디렉토리 이름을 명확하게 표현할 수 없습니다. 당신이 경우 특정 디렉토리 괜찮아 그, 줄 바꿈을 포함하지 않는다. 일반적인 말입니다.
다음은 편리한 단일 라이너입니다.
find X -type d -name "inc" -exec sh -c 'find {} -type d' \; > list
find
첫 번째 find
결과 각각에서 실행됩니다 . 이 exec
옵션은 최소한의 쉘 명령을 취할 수 있습니다. 앞에서 언급 {}
했듯이 첫 번째의 각 디렉토리로 바뀝니다 find
.
두 번째 find
는 요청에 따라 inc
디렉토리를 포함하여 첫 번째 결과의 "모든 하위 디렉토리를 나열합니다" . 출력에서 그 자체를 원하지 않으면 두 번째 find
로 깊이 1의 출력 폴더를 두십시오 .
find X -type d -name "inc" -exec sh -c 'find {} -mindepth 1 -type d' \; > list
그런 다음 명령을 stdout
로 리디렉션합니다 list
.
find path -name inc -type d -exec sh -c 'find {} -mindepth 1 -maxdepth 1 -type d' \;
이 중첩 된 찾기를 시뮬레이트하는 대답을 찾았습니다.
find X/ -type d | grep "/inc/" > list
find X/ -type d -print0 | awk 'BEGIN{RS="\0"}/\/inc\//' > list
( grep -z
또한 그럼 하나의 예를 통해 파이프에 필요, 널 문자를 구분합니다,하지만 출력이 null뿐만 아니라 분리 된 것으로 보인다 xargs -0L1 echo
는 선으로 줄을 얻기 위해 ). 이 경우 모든 항목을 개행 문자로 구분하여 목록을 파일로 저장하므로 파일 이름의 개행 문자는 여전히 명확하게 표현됩니다. 목록으로 수행하려는 작업에 따라 중간 파일이 필요하지 않을 수도 있습니다.
이 시도:
find path-of-x -path '*/inc/*' -type d > list
"\inc\"
:)
-path
깃발로 시도