find 命令入门
find 命令入門
- find 命令入門
- 列出當(dāng)前目錄及子目錄下的所有文件
- 列出某個(gè)目錄及子目錄下的所有文件
- 根據(jù)文件名查找文件
- 忽略大小寫
- 反向查找
- 組合條件查找(與)
- 組合條件查找(或)
- 只查找文件或只查找目錄
- 同時(shí)在多個(gè)目錄下查找
- 參考資料
Linux系統(tǒng)中的 find 命令在查找文件時(shí)非常有用。它可以根據(jù)不同的條件來查找文件,例如文件名、擁有者、文件大小、修改時(shí)間等。這篇文章,介紹一下find 命令的基本用法。
find 命令的初級語法如下:
$ find [path] [option] [expression]為了講清楚如何使用,咱們舉例說明。
列出當(dāng)前目錄及子目錄下的所有文件
假設(shè)目錄結(jié)構(gòu)如下
直接輸入find命令
列出某個(gè)目錄及子目錄下的所有文件
下面的命令表示查找當(dāng)前目錄下 d1 文件夾中的文件,默認(rèn)列出所有文件。
$ find d1 d1 d1/a.c d1/b.c根據(jù)文件名查找文件
我猜這個(gè)是用的最多的。
假設(shè)目錄結(jié)構(gòu)如下
查找./d2目錄下文件名稱中帶有hello的文件。
$ find ./d2 -name "*hello*" ./d2/hello.c ./d2/hello_world.c注意:命令中的*是通配符。另外,所有的文件夾都會(huì)被遞歸查找。
如果我們把路徑指定為/(根目錄),就會(huì)搜索整個(gè)文件系統(tǒng)(時(shí)間很長),所以請小心使用。當(dāng)然,隨時(shí)可以通過按下Ctrl + C來終止命令。
注意:當(dāng)指定文件夾的時(shí)候(例如示例中的./d2文件夾),忽略末尾的斜杠是沒有問題的。但是,如果文件夾是一個(gè)指向其它位置的鏈接,那就必須在末尾寫上斜杠,比如./d2/
忽略大小寫
在上面的例子中,結(jié)果是沒有Hello.c的。如果還要把這個(gè)文件找出來,就要指定忽略大小寫——在name前面加上字母i(表示 ignore)。
find ./d2 -iname "*hello*" ./d2/Hello.c ./d2/hello.c ./d2/hello_world.c非常建議用雙引號或單引號括住要匹配的模式(比如例子中的文件名)。不這樣做的話有時(shí)也能正常工作,但有時(shí)會(huì)產(chǎn)生奇怪的結(jié)果。
反向查找
除了查找滿足條件的文件之外,我們還可以查找不滿足條件的。比如我們要查找滿足條件A但是不滿足條件B的文件。
還是剛才的目錄結(jié)構(gòu)
假設(shè)我們要查找名稱中不含有字符串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組合條件查找(與)
我們可以查找同時(shí)滿足多個(gè)條件的文件。比如要查找文件名中含有字符串hello但是不含有字符串world的文件。
find ./d2 -name "*hello*" ! -name "*world*" ./d2/hello.c組合條件查找(或)
當(dāng)我們使用多個(gè)查找條件時(shí), find 命令會(huì)把每個(gè)條件通過 -a(and)操作符結(jié)合起來。也就是說,只有同時(shí)滿足所有條件的文件才會(huì)被列出。如果我們要查找滿足條件A或者滿足條件B的文件,需要使用 -o(or) 開關(guān)。
比如要查找文件名中含有字符串hello或含有字符串world的文件。
find ./d2 -name "*hello*" -o -name "*world*" ./d2/hello.c ./d2/hello_world.c ./d2/world.c只查找文件或只查找目錄
假設(shè)目錄結(jié)構(gòu)如下
上面的查找結(jié)果既包含目錄又包含文件。
用-type f選項(xiàng)指定只列出普通文件。
$ find ./ -name "*hello*" -type f ./d2/hello.c ./d2/hello_world.c用-type d選項(xiàng)指定只列出目錄。
$ find ./ -name "*hello*" -type d ./hello類似的還有-type p(有名管道),-type c(字符設(shè)備)等。
同時(shí)在多個(gè)目錄下查找
假設(shè)目錄結(jié)構(gòu)如下
【完】
參考資料
http://www.codebelief.com/article/2017/02/26-examples-of-find-command-on-linux/
總結(jié)
- 上一篇: 贪心算法与动态规划的区别与联系
- 下一篇: Windows上安装JDK