파일 알고리즘 찾기 [중복]

파일 알고리즘 찾기 [중복]

저는 Linux(Ubuntu 12.04)를 사용하고 있습니다. "find" 명령이 어떻게 작동하는지 알고 싶습니다. 제 질문은 GNU findutils에서 다운로드한 "찾기" C 파일을 어떻게 실행하고 테스트할 수 있느냐는 것입니다.

답변1

treatDirectory(dir) {
  open directory dir
  for each entry in dir
    if the entry is a match
      print it
    if the entry is a directory
      call treatDirectory(entry)
}

call treatDirectory(dir) for each directory given as parameter.

답변2

StackOverflow에 대한 추가 질문이 있지만 이 코드를 찾았습니다.

이 문제를 해결하는 올바른 방법을 찾으려면 소스 코드를 분석하면 find더 정확한 교훈을 얻을 수 있습니다. 실제로 무엇을 하고 있는지 알아내기 위해 실행할 필요는 없습니다. 모든 줄을 읽고 이해하지 못하는 내용을 검색해 보면 됩니다. 그러나 디버거를 사용하여 단계별로 진행하는 것이 도움이 될 수 있습니다. 컴파일하는 데 문제가 있으면 SO 또는 환경 구축에 도움이 되는 다른 리소스에 가져가세요.

#include <dirent.h>

int doSomethingWithTheFileSystem()
{
  DIR *directory;
  struct dirent *whatDoesEPstandfor; //seriously, you terse C bastards just HATE new guys don't you?
  int count = 0;
  char filename[50]; //This is going to bite you in the ass when you have a filename larger than 50. Seriously, don't do this. 
  FILE* file;

  directory = opendir ("."); 
  if(directory != NULL)
  {
    while((whatDoesEPstandfor = readdir(directory)) != NULL )
    {
      printf("Looking at: %s\n",whatDoesEPstandfor->d_name );
      if(strstr(whatDoesEPstandfor->d_name,"thatThingYouAreLookingFor") != NULL)
      {
        printf("Found it at: %s\n",whatDoesEPstandfor->d_name);
      }
    }
    closedir (directory);
  }
}

관련 정보