2012-05-22 2 views
0

지난 며칠 동안 패턴 (* -stack.txt)을 기반으로 파일을 검색하는 방법을 찾고 있었고 매우 어려움을 겪어 왔습니다 그렇게 할 길을 찾던 중 누군가가 이것을 할 수있는 방법을 알고 있는지 궁금해했다. Google 등에서 검색 한 적이 있지만 실제로 사용할 수있는 파일을 찾을 수 없습니다./이것은 특정 패턴과 일치하는 파일을 리눅스 디렉토리에서 검색하는 역할을합니다.C를 사용하여 파일을 검색하는 방법

(디렉토리 + 출력 예)

/dev/shm/123-stack.txt abc-stack.txt overflow-stack.txt 

searching for *-overflow.txt would return all of the above files 

답변

0

this question에 설명 된 것처럼 opendir 시스템 호출을 사용해야한다고 생각합니다.

그러나 더 나은 인터페이스를 제공하는 더 높은 수준의 언어이기 때문에 더 많은 작업이 진행될 것입니다.

1

최상의 선택은 아마도 glob(3) 일 것입니다. 거의 정확히 당신이 원하는 것을합니다. 당신이 말한 바로는 적절한 코드의 스케치는

char glob_pattern[PATH_MAX]; 
glob_t glob_result; 
snprintf(glob_pattern, PATH_MAX, "%s/%s", directory, file_pattern); 
glob(glob_pattern, 0, NULL, &glob_result); 
for (size_t i = 0; i < glob_result.gl_pathc; ++i) { 
    char *path = glob_result.gl_pathv[i]; 
    /* process path */ 
} 
입니다.
관련 문제