하위 디렉터리의 일부인 텍스트를 포함하여 모든 디렉터리 경로를 나열해야 합니다. 예를 들어, 텍스트는 다음과 같습니다"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
요 요 요