私は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);
}
}