파일 경로명에 적용된 표현식을 기반으로 디렉터리(또는 파일 등)를 찾는 방법 [중복]

파일 경로명에 적용된 표현식을 기반으로 디렉터리(또는 파일 등)를 찾는 방법 [중복]

파일 경로에 적용된 표현식을 기반으로 디렉터리를 찾거나 추출하려고 합니다. 예를 들어 다음 명령을 사용했습니다.

find . -type d -links 2

다음과 같은 디렉토리 목록을 얻으려면:

./foo/ABC/W
./foo/ABC/X
./foo/ABC/Y
./foo/ABC/Z
./foo/BCD/W
./foo/BCD/X
./foo/BCD/Y
./foo/BCD/Z
./foo/CDE/W
./foo/CDE/X
./foo/CDE/Y
./foo/CDE/Z
./bar/CDE/V
./bar/CDE/Q
./bar/BCD/V
./bar/BCD/Q
./bar/ABC/V
./bar/ABC/Q

이 목록을 가져오고 "CDE"가 있는 파일 경로만 추출하는 방법을 알고 싶습니다.

./foo/CDE/W
./foo/CDE/X
./foo/CDE/Y
./foo/CDE/Z
./bar/CDE/V
./bar/CDE/Q

지금까지 시도한 내용은 다음과 같습니다. 시도해도 아무 것도 출력되지 않습니다.

find . -type d -links 2 -name "CDE" -print

답변1

$ find . -type d -links 2 -path '*CDE*'
./foo/CDE/X
./foo/CDE/Z
./foo/CDE/W
./foo/CDE/Y
./bar/CDE/Q
./bar/CDE/V

또는 사용

find . -type d -links 2 -path '*/CDE/*'

CDE찾고 있는 경로 중간 어딘가에 있는 하위 디렉터리의 이름을 알고 있는 경우 .

답변2

find . -type d -links 2 -name "CDE" -print

일치 디렉터리기본 이름정확하게 CDE(때문에 -name CDE) 그리고 하위 디렉토리 없이(때문에 -links 2).

파일의 기본 이름은 /해당 경로의 마지막 숫자입니다. 예를 들어 의 기본 이름 ./foo/CDE/W은 입니다 W. 보시다시피 두 기준을 모두 충족하는 디렉터리는 없습니다.

당신은 팔로우하고 있습니다

find . -type d -links 2 -path '*/CDE/*'

-path pattern옵션은 다음 경우에 true입니다.

현재 경로 이름은 패턴 일치 표기법에 설명된 패턴 일치 표기법을 사용하여 패턴과 일치됩니다.

"패턴 일치 표기법"에서 별표는 모든 문자열과 일치합니다.

마지막으로, 기본적으로 Except 또는 presents 가 사용되므로 -print제거할 수 있습니다.-ok-exec

관련 정보