find 命令入門
find 命令入門
Linux系統中的 find
命令在查詢檔案時非常有用。它可以根據不同的條件來查詢檔案,例如檔名、擁有者、檔案大小、修改時間等。這篇文章,介紹一下find
命令的基本用法。
find
命令的初級語法如下:
$ find [path] [option] [expression]
為了講清楚如何使用,我們們舉例說明。
列出當前目錄及子目錄下的所有檔案
假設目錄結構如下
直接輸入find
命令
$ find
.
./d1
./d1/a.c
./d1/b.c
./d2
./d2/1.c
./d2/2.c
./d3
列出某個目錄及子目錄下的所有檔案
下面的命令表示查詢當前目錄下 d1
資料夾中的檔案,預設列出所有檔案。
$ find d1
d1
d1/a.c
d1/b.c
根據檔名查詢檔案
我猜這個是用的最多的。
假設目錄結構如下
查詢./d2
目錄下檔名稱中帶有hello
的檔案。
$ find ./d2 -name "*hello*"
./d2/hello.c
./d2/hello_world.c
注意:命令中的*
是萬用字元。另外,所有的資料夾都會被遞迴查詢。
如果我們把路徑指定為/
(根目錄),就會搜尋整個檔案系統(時間很長),所以請小心使用。當然,隨時可以通過按下Ctrl + C
來終止命令。
注意:當指定資料夾的時候(例如示例中的./d2
資料夾),忽略末尾的斜槓是沒有問題的。但是,如果資料夾是一個指向其它位置的連結,那就必須在末尾寫上斜槓,比如./d2/
忽略大小寫
在上面的例子中,結果是沒有Hello.c
的。如果還要把這個檔案找出來,就要指定忽略大小寫——在name
前面加上字母i
(表示 ignore)。
find ./d2 -iname "*hello*"
./d2/Hello.c
./d2/hello.c
./d2/hello_world.c
非常建議用雙引號或單引號括住要匹配的模式(比如例子中的檔名)。不這樣做的話有時也能正常工作,但有時會產生奇怪的結果。
反向查詢
除了查詢滿足條件的檔案之外,我們還可以查詢不滿足條件的。比如我們要查詢滿足條件A但是不滿足條件B的檔案。
還是剛才的目錄結構
假設我們要查詢名稱中不含有字串hello
的檔案,那麼需要在-name
的前面加上-not
。
find ./d2 -not -name "*hello*"
./d2
./d2/Hello.c
./d2/hell.c
./d2/world.c
我們也可以使用感嘆號 !
(可以理解為“非”) 來代替 -not
。
$ find ./d2 ! -name "*hello*"
./d2
./d2/Hello.c
./d2/hell.c
./d2/world.c
組合條件查詢(與)
我們可以查詢同時滿足多個條件的檔案。比如要查詢檔名中含有字串hello
但是不含有字串world
的檔案。
find ./d2 -name "*hello*" ! -name "*world*"
./d2/hello.c
組合條件查詢(或)
當我們使用多個查詢條件時, find
命令會把每個條件通過 -a
(and)操作符結合起來。也就是說,只有同時滿足所有條件的檔案才會被列出。如果我們要查詢滿足條件A或者滿足條件B的檔案,需要使用 -o
(or) 開關。
比如要查詢檔名中含有字串hello
或含有字串world
的檔案。
find ./d2 -name "*hello*" -o -name "*world*"
./d2/hello.c
./d2/hello_world.c
./d2/world.c
只查詢檔案或只查詢目錄
假設目錄結構如下
$ find ./ -name "*hello*"
./hello
./d2/hello.c
./d2/hello_world.c
上面的查詢結果既包含目錄又包含檔案。
用-type f
選項指定只列出普通檔案。
$ find ./ -name "*hello*" -type f
./d2/hello.c
./d2/hello_world.c
用-type d
選項指定只列出目錄。
$ find ./ -name "*hello*" -type d
./hello
類似的還有-type p
(有名管道),-type c
(字元裝置)等。
同時在多個目錄下查詢
假設目錄結構如下
$ find ./d1 ./d2 -name "*.c"
./d1/a.c
./d1/b.c
./d2/Hello.c
./d2/hello.c
./d2/hell.c
./d2/hello_world.c
./d2/world.c
【完】
參考資料
http://www.codebelief.com/article/2017/02/26-examples-of-find-command-on-linux/
相關文章
- find命令
- find -newer命令
- grep、find命令整理
- `find` 命令詳解
- find 命令及其示例
- linux中file命令和find命令Linux
- MySQL入門--mysql命令MySql
- linux命令入門指南Linux
- Linux find 命令詳解Linux
- MySQL入門--如何呼叫命令列命令MySql命令列
- linux每日命令(20):find命令概覽Linux
- Git入門-基礎命令Git
- cass-2-入門命令
- Linux入門基礎命令Linux
- fold 命令入門示例教程
- sed命令和find命令的結合的使用
- Docker 入門系列一:docker 命令Docker
- [轉]Systemd 入門教程:命令篇
- go Cobra命令列工具入門Go命令列
- Linux/Unix重要find命令詳解Linux
- 在 Linux中find命令使用技巧Linux
- linux 查詢檔案命令 findLinux
- find 命令的引數詳解
- 每天一個linux命令(1):find命令之execLinux
- Docker入門系列(二)--docker操作命令Docker
- [20180302]使用find命令小錯誤.txt
- python檔案查詢之find命令Python
- Java 命令列互動輸入庫 JLine 入門Java命令列
- linux快速入門及常用命令Linux
- git 快速入門及常用命令Git
- Linux入門基礎——常用命令Linux
- 【Docker入門】Docker的常用命令Docker
- 除了find命令,還有這麼多檔案查詢命令!
- Summary01 - cron任務、grep、find命令
- 檔案屬性及find命令總結
- Linux 命令列:find 的 26 個用法示例Linux命令列
- Linux系統下find、locate命令如何使用?Linux
- linux命令檢視記憶體命令free -h whereis locate find查詢命令Linux記憶體