텍스트가 포함된 모든 디렉토리 경로를 나열하는 방법은 무엇입니까?

텍스트가 포함된 모든 디렉토리 경로를 나열하는 방법은 무엇입니까?

하위 디렉터리의 일부인 텍스트를 포함하여 모든 디렉터리 경로를 나열해야 합니다. 예를 들어, 텍스트는 다음과 같습니다"tpcc" 나는 다음을 포함하여 두 가지 경로를 가지고 있습니다TPCC다음과 같이:

/home/arghy/sampledir1/**tpcc**-uva/subdir1/subdir2
/home/arghy/sampledir2/**tpcc**-postgre/subdir1/subdir2

명령을 사용하여 이러한 경로를 나열하고 위의 텍스트로 "tpcc"를 제공하고 싶습니다. 이 명령은 무엇입니까?

답변1

특정 문자열을 포함하는 현재 디렉토리 아래의 모든 디렉토리 경로 이름을 찾으려면 다음을 수행하십시오 tpcc.

find . -type d -path '*tpcc*'

조건자는 발견된 경로 이름 -path에 대해 패턴을 일치시키고 find, 패턴이 일치하면 현재 경로 이름이 인쇄됩니다.

만약 너라면아니요현재 경로 이름 끝에서 패턴을 일치시키려면 *tpcc*/*대신 as 패턴을 사용하십시오. /나중에 일치하면 엄격한 디렉토리 검색이 tpcc발생합니다 .find아래에모든 이름에는 tpcc.

-type d디렉토리 검색 만 가능합니다 .

이것을 간단하고 사용하기 쉬운 쉘 함수로 포장하시겠습니까?

pathfind () {
    case $# in
        1)  # only a string was given
            searchpath=.
            searchstring=$1
            ;;
        2)  # search path and string was given
            searchpath=$1
            searchstring=$2
            ;;
        *)  # anything else is an error
            echo 'Expected one or two arguments' >&2
            return 1
    esac

    find "$searchpath" -type d -path "*$searchstring*"
}

다음과 같이 사용할 수 있습니다.

pathfind tpcc

또는

pathfind /some/path tpcc

또는

pathfind /some/path 'tpcc*/'

답변2

설명하는 작업이 충족됩니다.

find . -type d | grep tpcc

그러나 이는 "리프" 디렉터리뿐만 아니라 "분기" 디렉터리도 나열합니다.

/home/arghy/sampledir1/tpcc-uva
/home/arghy/sampledir1/tpcc-uva/subdir1
/home/arghy/sampledir1/tpcc-uva/subdir1/subdir2

괜찮나요? 아니면 더 많은 하위 디렉터리가 있는 디렉터리를 건너뛰시겠습니까?

답변3

sudo find DIRECORY  -type f -exec grep -Iq . {} \; -exec dirname {} \; | sort|uniq

이 링크를 확인하세요:URL

다음 게시물: Babad bazar bazar bazar bazar bazar bazar bazar bazar bazar bazar 및 پafverb baba

요 요 요

관련 정보