2009-05-10 54 views

答えて

15

これは正常です。 ls -a(すべてのファイルを表示している場合、ls -A...を除くすべてのファイルを表示します)、同じ出力が表示されます。

.は、それが入っているディレクトリを参照するリンクです。foo/bar/.は同じものがfoo/barです。

..は、それが入っているディレクトリの親ディレクトリを参照するリンクです。foo/bar/..fooと同じものです。

.で始まるその他のファイルは、隠しファイルです(これは実際には何も行われませんが、これは実際の公式の隠し属性があるWindowsとは異なります)。 ~で終わるファイルは、おそらくテキストエディタで作成されたバックアップファイルです(これは実際にはとなります)。

これらの種類のファイルを表示したくない場合は、明示的にチェックして無視する必要があります。

+4

+1のようなものを使用してください。 "put(...)"の前に "if(* cur-> d_name!= '。')"というテキストを挿入するだけで、lsのデフォルトの動作が得られます。 –

+1

@j_random_hacker:もし彼がバックアップファイルを必要としないなら、彼はまた末尾の〜をチェックする必要があります。 – Zifre

+0

皆様、ありがとうございます!できればすべての回答を選択したいと思います。今、私はこの問題を完全に理解しています。ありがとうございました! – fwoncn

1

この現象は、ls -aのように、と正確にはです。あなたがフィルタリングを望むなら、あなたは事実の後にそれをする必要があります。隠しファイルを排除

6

: "〜" で終わる隠しファイルとファイルの排除

DIR* pd = opendir(xxxx); 
struct dirent *cur; 
while (cur = readdir(pd)) { 
    if (cur->d_name[0] != '.') { 
     puts(cur->d_name); 
    } 
} 

:あなたが名前を処理する前に

DIR* pd = opendir(xxxx); 
struct dirent *cur; 
while (cur = readdir(pd)) { 
    if (cur->d_name[0] != '.' && cur->d_name[strlen(cur->d_name)-1] != '~') { 
     puts(cur->d_name); 
    } 
} 
2

if (cur->d_name[0] != '.')スティック。

UNIXの隠しファイル標準が先頭のドットで、...も一致します。

末尾の~がバックアップファイルの標準です。これを無視するのはもう少しの作業ですが、マルチギガヘルツのCPUがそれを管理できます。 if (cur->d_name[strlen(cur->d_name)-1] == '~')

関連する問題