2017-09-27 4 views
0

CentOS 6.8을 사용하고 있으며 변수 (fPath라고 부름)를 파일의 파일 경로로 설정하려고 시도하고 있습니다 (폴더를 Foo라고 부름). 요점은 사용자가 폴더 Foo를 어디에 설치했는지 정확히 알 수 없다는 것입니다.정확한 텍스트가 포함 된 폴더 만 찾는 방법

문제는 내 find 명령이 Foo 문자열을 포함하는 모든 폴더를 반환한다는 것입니다 (Foo 폴더 내부에는 Foo_logs, Foo_apps, FooMore 등이 있습니다). 내 찾기 명령에서 Foo 폴더 경로 만 찾거나 반환하도록합니다.

것은 내가 검색을 시도하고 난이 만든 가장 가까운 시도는 명령을 사용한다 : 나는 푸 폴더를 포함하는 디렉토리 내에 이미 해요 경우

find -regex ./Foo 

그러나 이것은 단지 푸 폴더 경로를 반환합니다. 어떤 디렉토리에 있어도 find 명령을 적용하여 Foo 폴더 경로 만 리턴하고 싶습니다. 내가 시도했습니다

다른 명령은 다음과 같습니다

locate Foo 

find -type d -name Foo 

find ./Foo 

locate /Foo 

locate ./Foo 

find Foo | -wholename '*/Foo/*' 

find ./Foo | -wholename '*/Foo/*' 

find .*/Foo | -wholename '*/Foo/*' 

편집 : 당신이 짐작으로 find 완벽하게 일을 할 것,

답변

1

포맷은 :

find/-type d -name Foo

  • /입니다 어디에서 검색을 시작할 것입니다.
  • -type d 수단은 디렉토리 만
  • -name Foo 정확히 Foo라는 이름의 파일을 의미합니다.

여기에서는 -wholename을 사용하지 마십시오. 전체 경로가 (하위) 디렉토리 중 하나가 아닌 일치 할 것으로 예상되기 때문입니다.

+0

감사합니다.하지만 여전히 Foo 문자열 (Foo_logs 등)이 포함 된 모든 디렉토리를 반환합니다. 나는 Foo 파일에 대한 단일 리턴을 얻으려고 시도하고 있으며, 파일 이름은 Foo와 동일하고 다른 것은 없다 ('_'또는 'log'등). – Matt1713

+1

Foo라는 이름의 디렉토리가 여러 개있는 경우 해당 디렉토리를 출력으로 가져옵니다. 쉘이 더 많은 조건을 부여하지 않으면 찾고있는 쉘을 "추측"할 방법이 없습니다. Foo_log는 "Foo"디렉토리에 있지 않는 한 결과에 표시되지 않습니다 (처음에 찾고있는 것). – yoones

+0

오. 내가 참조. 명확히하기 위해 Foo라는 이름의 디렉토리/폴더가 하나만 있어야합니다. 그러나 find 명령에서 "Foo"문자열을 포함하는 디렉토리의 다른 내용을 무시하는 방법이 있습니다. 이전에 말한 것처럼 Foo 내부에있는 Foo_logs 디렉토리를 원하지 않습니다. 출력물에만 Foo 파일 경로가 필요합니다. 그게 가능하니? 푸 /\ Foo_logs FooMore 난 그냥 푸 부모의 파일 경로입니다 돌아 찾을 원하는 것은 : 그래서 기본적으로 나는 이런 식으로 뭔가가있다. 다른 사람들은 파일 이름에 "Foo"이상의 것을 가지고 있습니다. – Matt1713