재귀적으로 디렉터리를 찾지만 일치하는 하위 디렉터리는 인쇄하지 않습니다.

재귀적으로 디렉터리를 찾지만 일치하는 하위 디렉터리는 인쇄하지 않습니다.

다음 디렉터리 구조를 고려하세요.

dir1
  [domain.com] foo dir1
    subdir1
  subdir2
    FooFile
dir2
  [domain.com] foo dir2
  subdir3
    [domain.com] foo dir3
      subdir4
      subdir5
    subdir6
  subdir7
[domain.com] foo dir4
  subdir8

[domain.com].Desired 출력을 포함하는 이름을 나열하고 싶습니다 .

[domain.com] foo dir1
[domain.com] foo dir2
[domain.com] foo dir3
[domain.com] foo dir4

이걸 정리하는 데 어려움을 겪고 있어요. 내가 얻은 가장 가까운 것 :

find . -type d -regextype posix-egrep -regex ".*/(\[domain\.com\]).+" -exec basename {} \;

그러나 이는 하위 디렉터리도 출력합니다.

[domain.com] foo dir3
subdir5
subdir4
[domain.com] foo dir2
[domain.com] foo dir4
subdir8
[domain.com] foo dir1
subdir1

답변1

GNU를 찾은 것 같으니 이것으로 충분할 것입니다:

find . -type d -name '\[domain.com\]*' -printf '%f\n'

GNU 작업 find-printf일치하는 파일의 기본 이름만 인쇄할 수 있습니다 %f.

정규식의 문제점은 그 이후의 모든 것을 허용하므로 하위 디렉토리와 일치한다는 것 [domain.com]입니다 /. ".*/(\[domain\.com\])[^/]+"이 문제를 해결할 수도 있습니다.

관련 정보