Linux 中 find 指令的 7 個強大用途
好的,我可以嘗試對這段話進行深度偽原創。這是我的修改版本:
在 Linux 中,find 指令是後端開發人員必須掌握的操作之一,除非你使用的是 Windows Server。
在技術面試中,它也是一個常見的話題。下面是一個真實的問題:
如果你的 Linux 伺服器上有一個名為 logs 的目錄,如何刪除其中上次造訪超過一年的日誌檔案? 🤔
這種情況很常見,但令人驚訝的是,並不是每個開發人員都能在面試中清楚地寫出這個命令。
答案:首先,我們需要使用 cd 指令進入對應的目錄。然後,命令如下:
linuxmi@linuxmi:~/www.linuxmi.com$ find . -type f -atime +365 -exec rm -rf {} \;

如果你對上述指令還不完全理解,不用擔心。本文將介紹 find 指令的 7 個實用用途,你最終會掌握它。如果你已經知道了,閱讀本文將會是一個很好的複習。
1、根據檔案名稱或正規表示式尋找檔案
#讓我們從最簡單的用法開始。若要按特定名稱搜尋文件,命令如下:
linuxmi@linuxmi:~/www.linuxmi.com$ find . -name linuxmi.sh

上述程式碼中的.符號表示目前路徑。如果我們想要搜尋另一個路徑下的文件,只需指定即可:
linuxmi@linuxmi:~/www.linuxmi.com$ find /home/linuxmi/linuxmi.com -name linuxmi.png

如何找到所有格式為 png 的圖片?使用正規表示式:
find /home/linuxmi/linuxmi.com -name "*.png"
預設情況下,find 命令會搜尋常規文件,但最好指定類型以使一切更清晰:
find /home/linuxmi/linuxmi.com -type f -name "*.png"
2、尋找不同類型的檔案
#除了搜尋普通檔案外,我們還可以透過指定-type選項來搜尋其他類型的檔案。
例如目錄:
find . -type d -name "linuxmi*"
或符號連結:
find . -type l -name "linuxmi*"
3、以特定的時間戳記尋找檔案
要以特定的時間戳搜尋文件,我們需要了解Linux系統中的3種不同時間戳記:
存取時間戳記(atime):檔案上次被讀取的時間。修改時間戳(mtime):文件內容上次被修改的時間。更改時間戳(ctime):文件的元數據,例如所有權、位置、文件類型和權限設定等上次更改的時間。
#所以,就像一開始提到的面試問題一樣,要搜尋那些atime超過一年前的文件,我們可以寫以下指令:
linuxmi@linuxmi:~$ find . -type f -atime +365

如果我們需要找到 mtime 恰好是 5 天前的文件,請不要包含 號,因為它表示「大於」。
linuxmi@linuxmi:~$ find . -type f -mtime 5

顯然, 號表示“大於”,-號表示“小於”。因此,我們可以搜尋 ctime 在 5 到 10 天之間的檔案:
linuxmi@linuxmi:~$ find . -type f -ctime +5 -ctime -10

4、依檔案大小找出檔案
-size選項使我們能夠按特定大小找到文件。我們可以使用以下約定指定其計量單位:
-
b
:512字节块(默认)
-
c
:字节
-
w
:两字节单词
-
k
:千字节
-
M
:兆字节
-
G
:千兆字节
与按时间戳查找文件类似,+号表示“大于”,-号表示“小于”。例如,要查找大小在10兆字节和1千兆字节之间的文件:
find . -type f -size +10M -size -1G
5、按权限查找文件
适当控制文件的权限是Linux管理员的重要任务。find命令的-perm选项可以帮助我们按特定权限搜索文件:
find . -type f -perm 777
例如,上述命令将搜索所有具有777权限的文件,这意味着文件对其所有者、组和所有用户具有读、写和执行权限。
6、按文件所有者查找文件
这个任务很简单。我们只需要在-user选项中指定一个用户名。例如,以下命令将找到所有属于 linuxmi 的文件:
find -type f -user linuxmi
7、在查找文件后执行命令
在大多数情况下,我们希望在找到所需文件后执行一些后续操作,例如删除它们、检查它们的详细信息等等。-exec命令使所有这些操作变得更加简单。
现在,为了理解如何使用它,让我们回到之前提到的面试问题:
find . -type f -atime +365 -exec rm -rf {} ;
上述命令中-exec选项后面是rm -rf,用于删除文件。{}是找到的结果的占位符。
注意:占位符{}非常重要,特别是如果你想要删除文件。因为如果你不使用它,命令将对所有文件执行,而不仅仅是通过find命令找到的文件。
为了尝试一下,在终端上执行以下两个命令并检查它们的结果有什么不同:
一个使用了占位符:
find . -type f -atime +5 -exec ls {} ;
另一个没有使用:
find . -type f -atime +5 -exec ls ;
跟在-exec选项后面的命令必须以分号结束。正如我们所知,转义字符用于取消单个字符的特殊含义。在Linux中,反斜杠\被用作转义字符。因此,我们将其用于分号字符。
总结
阅读完find命令的7个用途后,之前提到的面试问题现在看起来非常简单了。现在你能直接写出答案并清楚地解释吗?
find . -type f -atime +365 -exec rm -rf {};
感谢阅读。如果你喜欢,请关注Linux迷 www.linuxmi.com 以享受更多精彩文章。 🙂
以上是Linux 中 find 指令的 7 個強大用途的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

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

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

Visual Studio Code (VSCode) 是一款跨平台、開源且免費的代碼編輯器,由微軟開發。它以輕量、可擴展性和對眾多編程語言的支持而著稱。要安裝 VSCode,請訪問官方網站下載並運行安裝程序。使用 VSCode 時,可以創建新項目、編輯代碼、調試代碼、導航項目、擴展 VSCode 和管理設置。 VSCode 適用於 Windows、macOS 和 Linux,支持多種編程語言,並通過 Marketplace 提供各種擴展。它的優勢包括輕量、可擴展性、廣泛的語言支持、豐富的功能和版
