2012-10-21 34 views
2

我在Ubuntu中使用readdir()來顯示文件和目錄。奇怪的是readdir()顯示了一些以「dot」開頭的文件,一些以〜結尾。但是這些文件不在我指定的目錄中。readdir()顯示不可見文件

這些文件是什麼?

我想知道在讀取文件名時,這些奇怪的文件是否也會被d_name提及?

enter image description here

問候

+0

〜的文件名endng是編輯器使用的恢復文件。 – cdarke

回答

3

readdir讀取該文件夾中現有的所有文件,而ls只列出非隱藏文件。試着用ls -a列出你的文件,你會看到這些文件。

+0

但我打算編寫一個程序來查找目錄中的文件並提及它們的路徑。有沒有辦法忽略它們。 – Naruto

+1

只需添加一個條件測試,如果要打印的文件是以點開頭的話。 – tomahh

+2

@UmerFarooq'if(filename [0]!='。'&& filename [strlen(filename)-1]!='〜')' – 2012-10-21 13:09:19

1

按照慣例,名稱以點開頭的文件隱藏在類Unix操作系統中(請參閱here)。

你當然可以檢查readdir生成的文件名開頭的點,而不是返回/輸出它們。

+0

具有glob擴展和'ls'的shell同意將它們隱藏在*。*'擴展或目錄的默認輸出中。沒有其他的隱藏的意義,如果沒有返回所有的名字,'readdir()'就沒用了。一種可能的替代設計將有兩種變體,例如'readdir()'和'readdir_hidden()',以便在需要時可以真正看到所有內容,但默認情況下不會。但界面中的極簡主義表明當前的設計更好。 –