搜尋
首頁系統教程Linux如何從命令行中找到Linux中的目錄

How To Find A Directory In Linux From Command Line

在Linux 系統中找不到某個文件夾?別擔心! Linux 提供強大的命令行工具來查找丟失的目錄。其中最通用的工具是find命令,它允許您根據各種條件搜索目錄。本指南將介紹在Linux 系統中查找目錄的幾種方法。

首先,我們將演示如何按名稱搜索目錄。然後,我們將演示如何查找最近修改的目錄和過去N 天內修改的目錄。您還將學習如何識別較舊的目錄——那些N 天前修改的目錄。

接下來,我們將介紹如何使用maxdepthmindepth選項在指定的深度範圍內搜索目錄。您將了解如何根據目錄的權限以及包含特定數量文件的目錄來查找目錄。

最後,我們將解釋如何搜索空目錄,這對於識別文件系統中未使用的或不必要的部分非常有用。

在整個指南中,我們將提供實際示例,以幫助您在使用Linux 中的目錄時充分利用find命令。

目錄

  • 在當前目錄中搜索目錄
  • 使用-iname 忽略大小寫
  • 搜索目錄和文件
  • 查找最近修改的目錄
  • 查找過去N 天內修改的目錄
  • 識別較舊的目錄
  • 在指定範圍內搜索目錄
  • 根據目錄權限查找目錄
  • 查找包含特定數量文件的目錄
  • 搜索空目錄
  • 總結

按目錄名稱搜索

如果您知道目錄的名稱和搜索的起始位置,請使用以下命令:

 find /path/to/search -type d -name "directory_name"

/path/to/search替換為實際路徑,將"directory_name"替換為目標目錄。

示例:

 $ find ~/ -type d -name "Documents"

此命令從用戶的home 目錄(~/) 開始搜索名為"Documents" 的目錄。

以下是命令的細分:

  1. find ~/ : 從用戶的home 目錄(~/) 開始搜索。
  2. -type d : 告訴find搜索目錄(-type d) 而不是普通文件。
  3. -name "Documents" : 此選項告訴find查找名為"Documents" 的目錄。 "Documents" 兩邊的引號確保搜索查找的是精確名稱,而不僅僅是包含"Documents" 單詞的目錄。

因此,此命令將搜索用戶的home 目錄及其所有子目錄,查找任何名為"Documents" 的目錄。如果找到任何目錄,它將打印這些目錄的完整路徑。

在當前目錄中搜索目錄

如果您想從當前目錄而不是home 目錄(~/) 開始搜索,您可以簡單地省略命令中的~/ 部分,如下所示:

 $ find . -type d -name "Documents"

以下是每個選項的功能細分:

  1. find . : .代表當前目錄,因此搜索將從當前工作目錄開始。
  2. -type d : 告訴find搜索目錄。
  3. -name "Documents" : 此選項告訴find查找名為"Documents" 的目錄。

該命令將搜索當前目錄及其所有子目錄,查找任何名為"Documents" 的目錄,並打印這些目錄的完整路徑。

或者,您還可以使用$PWD變量,它代表當前工作目錄,如下所示:

 $ find $PWD -type d -name "Documents"

這兩個命令都將達到相同的結果,從當前目錄開始搜索。

使用-iname 忽略大小寫

這是find命令中一個非常有用的標誌。

我們可以使用-iname選項代替-name來進行不區分大小寫的搜索。

以下是使用-iname而不是-name的示例:

 $ find . -type d -iname "Documents"

-iname "Documents"選項將匹配名稱為"Documents"、"documents"、"DOCUMENTS" 等的目錄。如果您不確定目錄名稱的確切大小寫,這將非常有用。

-name-iname之間的主要區別在於:

  • -name執行區分大小寫的搜索,因此它只會匹配與提供的模式大小寫完全相同的目錄。
  • -iname執行不區分大小寫的搜索,因此它將匹配目錄,而不管其大小寫如何。

您還可以將搜索詞包含在通配符中,如下所示:

 $ find . -type d -iname "*documents*"

此命令將列出當前目錄(及其子目錄)中所有名稱中包含"documents" 的目錄。

在您不知道或不關心要查找的目錄名稱的確切大小寫的情況下,使用-iname可能更方便。

就我個人而言,在搜索某些內容時,我更喜歡在find命令中使用-iname選項。

搜索目錄和文件

如果您從find命令中刪除-type d部分,它將搜索匹配其他條件(如-name-iname選項)的文件和目錄。

命令如下所示:

 $ find . -iname "Documents"

以下是會發生的情況:

  1. find命令將搜索當前目錄(.) 及其所有子目錄,查找任何名為"Documents"(不區分大小寫)的項目(文件和目錄)。
  2. 它將在結果中包含名為"Documents" 的目錄和任何名為"Documents" 的普通文件。

因此,此命令的輸出將包括:

  • 名為"Documents"、"documents"、"DOCUMENTS" 等的任何目錄
  • 名為"Documents"、"documents"、"DOCUMENTS" 等的任何普通文件

刪除-type d部分會使搜索範圍更廣,因為它將包含匹配指定名稱模式的目錄和文件。

如果您不確定要查找的"Documents" 條目是目錄還是文件,並且您想查找所有出現的情況,這將非常有用。

但是,如果您專門查找名為"Documents" 的目錄,最好保留-type d選項以縮小搜索範圍。

查找最近修改的目錄

要列出在特定日期範圍內修改的目錄,請使用-newermt兩次。

例如,要搜索在2024 年3 月15 日和2024 年4 月15 日之間(不包括這兩天)創建或修改的目錄,您可以使用:

 $ find /path/to/search -type d -newermt "2024-03-15" ! -newermt "2024-04-15"

以下是上述命令的細分:

  1. find /path/to/search : 告訴find命令從/path/to/search目錄開始搜索。
  2. -type d : 此選項確保find命令僅搜索目錄,而不是普通文件。
  3. -newermt "2024-03-15" : 此選項告訴find僅包含比2024 年3 月15 日更新(創建或修改)的目錄。
  4. ! -newermt "2024-04-15" : !符號否定條件,因此這部分告訴find排除比2024 年4 月15 日更新的目錄。

這些選項的組合導致find搜索在2024 年3 月15 日或之後創建或修改,但在2024 年4 月15 日之前的目錄。

例如,如果您想查找在特定時間段內創建或修改的所有目錄(例如,用於備份或審計),這將非常有用。

查找過去N 天內修改的目錄

要查找過去n 天內修改的目錄,請使用-mtime

以下命令將搜索~/Projects/ 目錄下在過去7 天內修改過的目錄。

 $ find ~/Projects/ -type d -mtime -7

以下是命令中每個部分的作用:

  1. find ~/Projects/ : 告訴find命令從~/Projects/ 目錄開始搜索。
  2. -type d : 此選項確保find命令僅搜索目錄,而不是普通文件。
  3. -mtime -7 : 此選項告訴find僅包含在過去7 天內修改過的目錄(“-mtime”中的“m”代表“修改時間”)。

-mtime -7部分的工作原理如下:

  • 減號(-) 表示“小於”或“在過去”。
  • 數字7 代表天數。

例如,如果您想查找最近在~/Projects/ 目錄中創建或更新的所有新目錄(也許是為了備份或跟踪),這將非常有用。

識別較舊的目錄

要查找N 天前修改的目錄(即(查找N 天前的目錄),請使用帶有加號的-mtime

例如,以下命令將搜索~/Projects/ 目錄下在7 天前修改過的目錄。

 $ find ~/Projects/ -type d -mtime 7

換句話說,它將查找在過去7 天內未修改(創建、更新或訪問)的目錄。

-mtime 7選項告訴find僅包含修改時間(“-mtime”中的“m”)大於7 天前的目錄。

因此,此命令可用於查找在一段時間內未被觸碰或修改的目錄,這對於識別未使用的或過時的目錄或對項目目錄結構執行維護/清理等任務很有幫助。

我們如何知道目錄是否真的在X 天前修改?很簡單。

要驗證find命令找到的目錄是否在7 天前修改,您可以使用stat命令顯示每個目錄的修改時間。

 $ find ~/Projects/ -type d -mtime 7 -exec stat -c '%n %y' {} \;

以下是上述命令的解釋:

  1. find ~/Projects/ -type d -mtime 7 : 此命令部分與之前相同,查找7 天前的目錄。
  2. -exec stat -c '%n %y' {} \; : 此部分使用find-exec選項對找到的每個目錄運行stat命令。
  • stat -c '%n %y' : stat命令顯示目錄的文件名(%n) 和上次修改時間(%y)。
  • {} : 這是一個佔位符,由find找到的當前目錄替換。
  • \; : 這終止了-exec命令。

運行此命令時,它將顯示7 天前每個目錄的路徑和上次修改時間。這使您可以驗證找到的目錄確實是在7 天前修改的。

以下是輸出示例:

 <code>/home/ostechnix/Projects/Python 2024-03-22 14:18:14.958042173 0530 /home/ostechnix/Projects/Vim 2024-03-22 14:05:55.887041168 0530</code>

輸出中顯示的修改時間將幫助您確認目錄確實超過7 天,正如原始find命令所要求的那樣。

在指定範圍內搜索目錄

我們可以使用find命令的maxdepthmindepth選項在指定的深度範圍內搜索目錄。

以下是語法:

 find /path/to/search -mindepth X -maxdepth Y -type d

讓我解釋一下此命令中每個選項的作用:

  1. find /path/to/search : 告訴find命令從/path/to/search目錄開始搜索。
  2. -mindepth X : 此選項設置要包含在搜索結果中的目錄的最小深度級別。值X 代表從起點開始的最小目錄級別數。
  3. -maxdepth Y : 此選項設置要包含在搜索結果中的目錄的最大深度級別。值Y 代表從起點開始的最大目錄級別數。
  4. -type d : 此選項確保find命令僅搜索目錄,而不是普通文件。

請注意, -mindepth選項應在其他參數(包括-type )之前指定。

例如,要在/Projects目錄中搜索至少2 層深但最多4 層深的目錄,您可以使用以下命令:

 $ find ~/Projects -mindepth 2 -maxdepth 4 -type d

此命令將搜索相對於/Projects目錄至少2 層深且最多4 層深的目錄(包含)。

您可以根據您的具體需求調整X 和Y 的值。例如,如果您想搜索恰好3 層深的目錄,您可以使用:

 $ find ~/Projects -mindepth 3 -maxdepth 3 -type d

這將僅在搜索結果中包含3 層深的目錄。

結合使用maxdepthmindepth可以幫助您將搜索範圍縮小到特定範圍的目錄深度,這對於組織和管理文件系統非常有用。

根據目錄權限查找目錄

要根據目錄的權限查找目錄,您可以使用帶有-perm選項的find命令。

 find /path/to/search -type d -perm<permission_specification></permission_specification>

/path/to/search替換為您想要開始搜索的目錄,並將<permission_specification></permission_specification>替換為所需的權限。您可以使用八進製表示法指定權限。

讓我向您展示一些示例。

要在當前目錄中查找具有權限755(即所有者為rwx,組和其他人為rx)的所有目錄:

 $ find . -type d -perm 755

要查找所有者俱有rwx 權限、組具有rx 權限且其他人沒有權限的目錄:

 $ find . -type d -perm 750

要在~/Projects 中查找所有者俱有任何權限且組和其他人具有rx 權限的所有目錄:

 $ find ~/Projects~ -type d -perm -005

您可以根據您的具體要求調整<permission_specification></permission_specification>。此外,如果需要,您可以使用-maxdepth-mindepth選項來控制搜索的深度。

查找包含特定數量文件的目錄

要查找包含特定數量文件的目錄,您可以結合使用findwc和bash 命令。

示例:

以下命令查找當前目錄及其子目錄中恰好包含4 個文件的目錄,並打印這些目錄的完整路徑。

 $ find . -type d -exec bash -c 'if [ $(find "$1" -maxdepth 1 -type f | wc -l) -eq 4 ]; then echo "$1"; fi' _ {} \;

讓我們逐步分解命令:

  1. find . -type d : 從當前目錄(.) 開始搜索目錄(而不是文件)。
  2. -exec bash -c '...' _ {} \; : 此部分使用findexec選項為找到的每個目錄執行自定義Bash 腳本。
  3. if [ $(find "$1" -maxdepth 1 -type f | wc -l) -eq 4 ]; then echo "$1"; fi : 這是為每個目錄執行的自定義Bash 腳本。
  • $(find "$1" -maxdepth 1 -type f | wc -l) : 此部分計算當前目錄(“$1”) 中的文件(而不是目錄)的數量。 -maxdepth 1選項確保它只計算當前目錄中的文件,而不是子目錄中的文件。
  • [ ... -eq 4 ] : 這檢查當前目錄中的文件數量是否恰好為4。
  • then echo "$1"; fi : 如果條件為真(目錄恰好有4 個文件),則打印目錄的完整路徑。

例如,如果您有一組特定目錄應該包含一定數量的文件,並且您想快速識別任何不符合該條件的目錄,這將非常有用。

搜索空目錄

要查找空目錄,請使用-empty標誌:

 find /path/to/search -type d -empty

例如,要搜索“Work”目錄中的空目錄,請運行:

 $ find ~/Work/ -type d -empty

請記住根據需要調整路徑。

總結

在本指南中,您學習了幾種使用find命令在Linux 系統中搜索目錄的技術。

您可以按名稱、最近更改的時間或內部文件數量進行搜索。您甚至可以找到空文件夾或具有特定權限的文件夾。

通過了解如何使用maxdepthmindepthsize等選項,您可以改進搜索以專注於您需要的特定目錄。

因此,下次文件夾丟失時,請不要驚慌!使用這些find命令來跟踪它並保持文件的組織性。

以上是如何從命令行中找到Linux中的目錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Linux和Windows之間的硬件兼容性有何不同?Linux和Windows之間的硬件兼容性有何不同?Apr 23, 2025 am 12:15 AM

Linux和Windows在硬件兼容性上不同:Windows有廣泛的驅動程序支持,Linux依賴社區和廠商。解決Linux兼容性問題可通過手動編譯驅動,如克隆RTL8188EU驅動倉庫、編譯和安裝;Windows用戶需管理驅動程序以優化性能。

Linux和Windows之間虛擬化支持有哪些差異?Linux和Windows之間虛擬化支持有哪些差異?Apr 22, 2025 pm 06:09 PM

Linux和Windows在虛擬化支持上的主要區別在於:1)Linux提供KVM和Xen,性能和靈活性突出,適合高定制環境;2)Windows通過Hyper-V支持虛擬化,界面友好,與Microsoft生態系統緊密集成,適合依賴Microsoft軟件的企業。

Linux系統管理員的主要任務是什麼?Linux系統管理員的主要任務是什麼?Apr 19, 2025 am 12:23 AM

Linux系統管理員的主要任務包括系統監控與性能調優、用戶管理、軟件包管理、安全管理與備份、故障排查與解決、性能優化與最佳實踐。 1.使用top、htop等工具監控系統性能,並進行調優。 2.通過useradd等命令管理用戶賬戶和權限。 3.利用apt、yum管理軟件包,確保系統更新和安全。 4.配置防火牆、監控日誌、進行數據備份以確保系統安全。 5.通過日誌分析和工具使用進行故障排查和解決。 6.優化內核參數和應用配置,遵循最佳實踐提升系統性能和穩定性。

很難學習Linux嗎?很難學習Linux嗎?Apr 18, 2025 am 12:23 AM

學習Linux並不難。 1.Linux是一個開源操作系統,基於Unix,廣泛應用於服務器、嵌入式系統和個人電腦。 2.理解文件系統和權限管理是關鍵,文件系統是層次化的,權限包括讀、寫和執行。 3.包管理系統如apt和dnf使得軟件管理方便。 4.進程管理通過ps和top命令實現。 5.從基本命令如mkdir、cd、touch和nano開始學習,再嘗試高級用法如shell腳本和文本處理。 6.常見錯誤如權限問題可以通過sudo和chmod解決。 7.性能優化建議包括使用htop監控資源、清理不必要文件和使用sy

Linux管理員的薪水是多少?Linux管理員的薪水是多少?Apr 17, 2025 am 12:24 AM

Linux管理員的平均年薪在美國為75,000至95,000美元,歐洲為40,000至60,000歐元。提升薪資可以通過:1.持續學習新技術,如雲計算和容器技術;2.積累項目經驗並建立Portfolio;3.建立職業網絡,拓展人脈。

Linux的主要目的是什麼?Linux的主要目的是什麼?Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

互聯網在Linux上運行嗎?互聯網在Linux上運行嗎?Apr 14, 2025 am 12:03 AM

互聯網運行不依賴單一操作系統,但Linux在其中扮演重要角色。 Linux廣泛應用於服務器和網絡設備,因其穩定性、安全性和可擴展性受歡迎。

Linux操作是什麼?Linux操作是什麼?Apr 13, 2025 am 12:20 AM

Linux操作系統的核心是其命令行界面,通過命令行可以執行各種操作。 1.文件和目錄操作使用ls、cd、mkdir、rm等命令管理文件和目錄。 2.用戶和權限管理通過useradd、passwd、chmod等命令確保系統安全和資源分配。 3.進程管理使用ps、kill等命令監控和控制系統進程。 4.網絡操作包括ping、ifconfig、ssh等命令配置和管理網絡連接。 5.系統監控和維護通過top、df、du等命令了解系統運行狀態和資源使用情況。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能