저는 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);
}
}