在 Linux 中刪除空檔案和空目錄
概述
我們將學習如何在 Linux 上刪除空目錄和空檔案。
空目錄不佔用任何磁碟空間,但保持它們整潔是好的。我們應該定期清理舊檔案和資料夾。
本教程中的所有說明都適用於 Linux 系統。它們在 Windows 上不起作用。
刪除目錄中的空檔案
您可以使用 `find` 命令刪除現有資料夾中的所有空檔案。
$ find . -type f -empty -print -delete
要刪除空目錄,我們首先需要搜尋指定資料夾中的所有空資料夾,然後刪除它們。
要查詢當前目錄中的所有空目錄,請使用以下命令:find. −type d −empty −print | xargs rm −rf。新增 −delete 選項以刪除它們。
讓我們舉一個例子來更好地解釋這個概念。
一個包含空檔案和非空檔案的目錄可以被認為。這裡,以 data-filename 為字首的檔案是非空檔案,以 empty 為字首的檔案是空檔案。
|-- data-file1 |-- data-file2 |-- empty-file1 |-- empty-file2 |-- empty-file3 |-- empty file 4 |-- mydir1 | |-- data-file3 | `-- empty-file5 |-- mydir2 | |-- data-file4 | `-- empty-file6 `-- mydir3 `-- mydir4 `-- mydir5
我們現在將在這些目錄中執行上述命令。它將遞迴刪除所有空檔案 - 意味著目錄 mydir1 和 mydird2 中的 empty-file4 和 empty-file5 也將被刪除。
$ find . -type f -empty -print -delete ./empty-file1 ./empty-file2 ./empty-file3 ./mydir1/empty-file5 ./mydir2/empty-file6 ./empty file 4
讓我們仔細檢視輸出。我們將看到此操作已從目錄中刪除了名稱包含空格的檔案。
它只刪除了空檔案,而不是像 mydir1、mydir2、mydir4 和 mydir6 這樣的目錄。
非遞迴刪除空檔案
到目前為止,我們已經討論瞭如何遞迴地從目錄中刪除空檔案。但是,如果我們想從當前目錄本身刪除空檔案怎麼辦?
find 實用程式有一個選項 −maxDepth,它定義了 find 實用程式搜尋檔案的最大深度。
使用 −maxdepth1,'f'(檔案)命令將只搜尋當前目錄中的檔案。
$ find . -maxdepth 1 -type f -empty -print -delete ./empty-file1 ./empty-file2 ./empty-file3 ./empty file 4
刪除所有空目錄
我們可以使用 find 命令的 -type f 選項搜尋檔案 −
$ find . -type d -empty -print -delete
它將刪除當前目錄中的所有空目錄。
讓我們在儲存指令碼的目錄中執行此命令。
$ find . -type d -empty -print -delete ./mydir3 ./mydir4/mydir5 ./mydir4
刪除 mydir5 資料夾後,mydir3 不再是空目錄;相反,它包含來自 mydir2 的檔案。
非遞迴刪除空目錄
透過使用 −maxdepth 1,find 實用程式僅搜尋當前工作目錄中的空目錄。
$ find . -maxdepth 1 -type d -empty -print -delete ./mydir3
同時刪除空檔案和空目錄
現在終於到了將我們到目前為止學到的所有內容結合起來的時候了。透過執行一個命令刪除當前目錄中的所有空檔案和資料夾。
我們將使用 find 實用程式中的邏輯或 (OR) 操作 (-o) 來搜尋空檔案或目錄。
$ find . -type d -empty -print -delete -o -type f -empty -print -delete ./empty-file1 ./empty-file2 ./empty-file3 ./mydir1/empty-file5 ./mydir2/empty-file6 ./mydir3 ./mydir4/mydir5 ./mydir4
−o 選項將命令從檔名拆分為兩部分。第一部分,−type d −empty − print −delete,刪除所有空目錄,而第二部分,− type f −empty − print − delete,刪除所有為空的檔案。
我們可以使用 −maxdepth 0 遞迴刪除空檔案/目錄。
$ find . -maxdepth 1 -type d -empty -print -delete -o -type f -empty -print -delete ./empty-file1 ./empty-file2 ./empty-file3 ./mydir3
結論
在這裡,我們學習了空檔案、空資料夾以及如何在 Linux 中刪除它們。我們查看了兩種不同的檔案刪除方式 - 遞迴和非遞迴。
在刪除目錄之前,審查所有目錄並刪除任何不必要的目錄非常重要。在上面討論的所有示例中,我們可以使用 −recurse 選項來審查將被刪除的所有目錄。
作為最佳實踐,我們可以設定一個 cron 任務來從我們的系統中刪除空資料夾和子資料夾。這樣,我們計算機上就不會積累空資料夾和子資料夾。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP