在 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 任務來從我們的系統中刪除空資料夾和子資料夾。這樣,我們計算機上就不會積累空資料夾和子資料夾。

更新於: 2022-12-23

9K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.