-1

Cでディレクトリとそのサブディレクトリ内のファイルを検索するにはどうすればよいですか? の使用は許可されておらず、使用する必要find があります。opendirreaddirstat

ls -lnファイルが実際に存在する場合、コマンドのようなことを実行したい。

4

3 に答える 3

1

ディレクトリをトラバースするには、opendir(3)readdir(3)、およびclosedir(3)が必要です。

ファイルのタイプをチェックするために(それがディレクトリであるかどうか、そしてその中を再帰的に検索する必要があるかどうかを確認するために)、stat(2)が必要になります。

あなたはチェックしたくなるでしょう

(struct stat).st_mode & S_IFDIR

ファイルがディレクトリかどうかを確認します。詳細については、 <sys/stat.h>を参照してください。

于 2012-06-11T15:58:02.777 に答える
1

C で小さなコードを書こうとすると、この検索アクティビティを簡単に実行できます。/home/Jack/ で abc.txt を検索し、ファイル ストリームを開き、ファイル パスをパラメーターとして渡す必要があるとします。このステートメントが実行されると、既存のファイルを開こうとします。ファイルが存在する場合、この API は 0 以外を返します。それ以外の場合は、-1 または 0 が返されます。

于 2012-06-12T10:07:00.983 に答える
0

あなたはすでに基本的な答えを提供しました:opendir// 。ディレクトリエントリを歩くときに、それぞれがファイルを参照しているかディレクトリを参照しているかを確認します。ディレクトリを参照するものは、同様に(通常は再帰的に)トラバースします。ファイルを参照している場合は、その名前を探しているファイルと比較して、見つけたかどうかを確認します。readdirclosedir

もう1つの小さな詳細:シンボリックリンクも確認する必要があります。シンボリックリンクは、(たとえば)親ディレクトリを参照できます。これにより、無限再帰が発生する可能性があります。シンボリックリンクを完全に無視するか、少なくともトラバースを開始したディレクトリのリストを保持し、シンボリックリンクにあるものがまだリストにない場合にのみ解決/トラバースすることができます。

于 2012-06-11T15:26:36.660 に答える