我必須刪除C代碼中的數百個文件。我在循環中使用「刪除」。有沒有比使用「刪除」更快的方式來做到這一點?我問這個,因爲我不能用「刪除」來給wildchars。從C代碼中刪除文件
回答
不,沒有比在POSIX系統上使用remove()
或unlink()
更快的方式 - 循環。
系統rm
命令也這樣做 - 至少在命令行中給出名稱的簡單非遞歸情況下。 shell擴展了元字符,並且rm
(in)着名地刪除了它被告知要刪除的內容,而不知道在命令行中使用的災難性的*.*
表示法。 (在遞歸情況下,它使用這樣的功能如nftw()
在深度優先的順序和重複的調用目錄結構遍歷unlink()
刪除文件和rmdir()
以除去(現在爲空的)目錄。)
POSIX提供函數(glob()
和wordexp()
)以生成(POSIX)shell中使用的元字符的文件名列表,並加上fnmatch()
以查看名稱是否與模式匹配。
是不是'*'與'*。*'相同,還是有一些細微差別?當人們提到'rm'啓示時,他們似乎總是使用'*。*' –
在Windows下*需要*。*';在Unix上,'*'就足夠了(實際上,比'*。*'更具破壞性,因爲簡單的'*'匹配更多的名字)。我稍微辯論使用哪一個,並且(好或壞)選擇'*。*'。這兩個都是壞消息。 (而且我見過的最糟糕的'rm'大災變是刪除了以root用戶/ /作爲主目錄創建的臨時用戶帳戶;'remove user'命令刪除了其主目錄下的所有內容。系統可以在丟失關鍵文件後運行,幸運的是,它是一個全新的系統,並且從前一天開始有備份。) –
感謝您的輸入。我可以生成沒有任何問題的文件名。我唯一擔心的是更快地發出「刪除」命令。 – Kitcha
你可以使用system
來產生一個可以爲你做擴展的shell。這可能不會比在循環中調用unlink()更快,因爲它必須產生一個shell(啓動一個新進程)。但編碼會更容易。
- 1. sed從文件中刪除代碼塊
- 2. 如何從代碼中刪除文件?
- 3. 從C++代碼中刪除kafka主題
- 4. 文件刪除代碼
- 5. 使用QFile :: remove()從C++代碼中刪除文件正在離開.nfsxxxxx文件?
- 6. 從GitHub中刪除代碼
- 7. c#代碼刪除文本文件中的重複單詞
- 8. 代碼刪除該文件夾中
- 9. 錯誤代碼:3604從SharePoint文檔庫中刪除文件時
- 10. 從文本文件中刪除空格的Jython代碼
- 11. C#代碼被刪除
- 12. 刪除C#代碼重複#
- 13. 鍵盤快捷鍵刪除C#代碼文件中的空行
- 14. 從SHELL中的日誌文件中刪除HTML代碼
- 15. 如何使用c#中的代理從FTP中刪除文件#
- 16. 如何從TFS中刪除文件並從源代碼管理中排除?
- 17. 用C++從文件中刪除圖像
- 18. 從文件中刪除標籤用C
- 19. 從文件中刪除字節 - c
- 20. 從文件中刪除記錄C++
- 21. 從XML文件中刪除回車C#
- 22. 從C++文件中刪除「funny」字符
- 23. C++從.txt文件中刪除行
- 24. 從文件C代碼
- 25. 如何從EXE文件中刪除死代碼?
- 26. 從github上的推送代碼中刪除文件
- 27. 從vrml(wrl)文件中刪除代碼,選擇性
- 28. Git:從源代碼控制文件中刪除回車
- 29. Python從文件中刪除一行代碼
- 30. 從linux文件中刪除顏色代碼
爲什麼你不在管道中輸入ls的結果,這樣就不必輸入所有名稱 – lc2817
問題是,該目錄中有50000個文件。我必須在必要時刪除其中的一小部分。 「刪除」對我來說工作正常,但需要一段時間才能完成。我正在尋找更快的東西。如果我可以在「C」中執行相同的操作,我不想從「C」調用shell命令。 – Kitcha
你可以使用python嗎? :) – lc2817