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