我必須刪除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. 使用QFile :: remove()從C++代碼中刪除文件正在離開.nfsxxxxx文件?
- 2. 從GitHub中刪除代碼
- 3. 錯誤代碼:3604從SharePoint文檔庫中刪除文件時
- 4. 從文本文件中刪除空格的Jython代碼
- 5. 刪除C#代碼重複#
- 6. C#代碼被刪除
- 7. 鍵盤快捷鍵刪除C#代碼文件中的空行
- 8. 從文件中刪除標籤用C
- 9. 用C++從文件中刪除圖像
- 10. C++從.txt文件中刪除行
- 11. 從WPF MVVM項目中刪除代碼隱藏文件
- 12. 從代碼庫中刪除無用的文件
- 13. sed幫助從多個文件中刪除malwarm代碼
- 14. Git:從源代碼控制文件中刪除回車
- 15. 從vrml(wrl)文件中刪除代碼,選擇性
- 16. 實體框架從源代碼管理中刪除文件
- 17. Python從文件中刪除一行代碼
- 18. 從Rails模式文件中刪除SQL代碼
- 19. 從.js文件中刪除惡意代碼
- 20. 刪除C/C++,從該文件被讀
- 21. 刪除* .cs,* .Designer.cs代碼隱藏文件?
- 22. Java代碼無法刪除文件
- 23. 刪除「」從不同的編碼文件中讀取在C#
- 24. 刪除C中的文件
- 25. 刪除c中的文件
- 26. C#刪除文件
- 27. 如何從C#中的URL中刪除Cookie代碼?
- 28. 如何從目標中的代碼中刪除圖像c
- 29. 通過C#代碼刪除文件時出錯
- 30. C++從文件中運行代碼
爲什麼你不在管道中輸入ls的結果,這樣就不必輸入所有名稱 – lc2817
問題是,該目錄中有50000個文件。我必須在必要時刪除其中的一小部分。 「刪除」對我來說工作正常,但需要一段時間才能完成。我正在尋找更快的東西。如果我可以在「C」中執行相同的操作,我不想從「C」調用shell命令。 – Kitcha
你可以使用python嗎? :) – lc2817