하위 디렉터리의 일부인 텍스트를 포함하여 모든 디렉터리 경로를 나열해야합니다. 예를 들어, 텍스트는 "tpcc" 이고 다음과 같이 tpcc 를 포함하는 두 개의 경로가 있습니다 .
/home/arghy/sampledir1/**tpcc**-uva/subdir1/subdir2
/home/arghy/sampledir2/**tpcc**-postgre/subdir1/subdir2
명령을 사용하여 이러한 경로를 나열하고 앞서 언급 한 텍스트로 "tpcc"를 제공하고 싶습니다. 이것에 대한 명령은 무엇입니까?
특정 문자열을 포함하는 현재 디렉토리에서 아래쪽으로 모든 디렉토리 경로 이름을 찾으려면 tpcc
다음을 수행하십시오.
find . -type d -path '*tpcc*'
-path
술어는 경로 이름에 대한 패턴 일치 find
에서 제공을하고 패턴과 일치하는 경우, 현재의 경로 이름이 인쇄됩니다.
당신이 경우 하지 않습니다 원하는 패턴이 현재 경로의 끝에서 일치하는 사용 *tpcc*/*
하는 대신 패턴으로. 일치하는 /
곳의 후하는 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*/'
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다