Linux中find命令的用法入門
前言
Linux系統(tǒng)下的Find 命令具有很強(qiáng)大的搜索功能,可以遍歷整個文件系統(tǒng)。所以 find 命令很耗資源,有時候甚至?xí)馁M(fèi)很長時間,因此建議把它放在后臺執(zhí)行。
Find 命令格式如下所示:
find pathname -options [-print -exec -ok …]
介紹一種簡單易記的格式:
find <指定目錄> <指定條件> <指定動作>
動作參數(shù)
1、-exec 命令名稱 {} \;
對符合條件的文件執(zhí)行所給的 unix 命令,而不詢問用戶是否需要執(zhí)行該命令。{}表示命令的參數(shù)即為所找到的文件,命令的末尾必須以“ \;”結(jié)束,”{}”和”\;”之間必須有一個空格。
2、-ok 命令名稱 {} \;
對符合條件的文件執(zhí)行所給的 Linux 命令,與exec不同的是,它會詢問用戶是否需要執(zhí)行該命令。
3、-ls
詳細(xì)列出所找到的所有文件。
4、-fprintf 文件名
將找到的文件名寫入指定文件。
5、-print
在標(biāo)準(zhǔn)輸出設(shè)備上顯示查找出的文件名。
6、-printf
格式的寫法可考有關(guān)C語言的書。
命令選項
1、-name
按照文件名查找文件。
2、-perm
按照文件權(quán)限來查找文件。
3、-prune
使用這一選項可以使find命令不在當(dāng)前指定的目錄中查找,如果同時使用-depth選項,那么-prune將被find命令忽略。
4、-user
按照文件屬主來查找文件。
5、-group
按照文件所屬的組來查找文件。
6、-nogroup
查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
7、-nouser
查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
8、-newer file1 ! file2
查找更改時間比文件file1新但比文件file2舊的文件。
9、-regex pattern
文件名與正則表達(dá)式 pattern 匹配。這是對整個路徑的匹配,不是搜索文件。例如,要匹配名為 ‘./fubar3' 的文件,可以使用正則表達(dá)式 ‘.bar.' 或者 ‘.*b.3',但是不能用`b.*r3'。
10、-type
查找某一類型的文件,諸如:
- b - 塊設(shè)備文件。
- d - 目錄。
- c - 字符設(shè)備文件。
- p - 管道文件。
- l - 符號鏈接文件。
- f - 普通文件
10、-size n:[c]
查找文件長度為n塊的文件,帶有c時表示文件長度以字節(jié)計。
11、-depth
在查找文件時,首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找。
12、-fstype
查找位于某一類型文件系統(tǒng)中的文件,這些文件系統(tǒng)類型通??梢栽谂渲梦募?etc/fstab中找到,該配置文件中包含了本系統(tǒng)中有關(guān)文件系統(tǒng)的信息。
13、-mount
在查找文件時不跨越文件系統(tǒng)mount點。
14、-follow
如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。
15、-cpio
對匹配的文件使用cpio命令,將這些文件備份到磁帶設(shè)備中。
16、時間控制
-mtime -n +n
按照文件的更改時間來查找文件, - n表示文件更改時間距現(xiàn)在n天以內(nèi),+ n表示文件更改時間距現(xiàn)在n天以前。find命令還有-atime和-ctime 選項,但它們都和-mtime選項一樣,按照時間節(jié)點來查找文件,但也有一些區(qū)別:
- -amin n 查找系統(tǒng)中最后N分鐘訪問的文件
- -atime n 查找系統(tǒng)中最后n*24小時訪問的文件
- -cmin n 查找系統(tǒng)中最后N分鐘被改變文件狀態(tài)的文件
- -ctime n 查找系統(tǒng)中最后n*24小時被改變文件狀態(tài)的文件
- -mmin n 查找系統(tǒng)中最后N分鐘被改變文件數(shù)據(jù)的文件
- -mtime n 查找系統(tǒng)中最后n*24小時被改變文件數(shù)據(jù)的文件
羅輯控制
羅輯與
expr1 -a expr2
expr1 -and expr2
查找同時滿足條件 expr1 和 expr2 的文件,例如在整個系統(tǒng)中查找既沒有屬主又沒有屬組的文件:
find / -nogroup –a –nouser
羅輯或
expr1 -o expr2
expr1 -or expr2
查找滿足條件 expr1 或者 expr2 的文件, 例如查找 tmp 目錄下以 “.sh” 結(jié)尾或者以 “.log” 結(jié)尾的文件:
find /tmp -name “.sh” -o -name “.log”
羅輯非
-not expr
查找不滿足條件 expr 的文件,例如查找 /tmp 目錄下所屬用戶不是 root 的文件:
find /tmp -not -user root -exec ls -l {} \;
一些典型的應(yīng)用
遞歸修改目錄下的所有目錄權(quán)限(只修改目錄,不修改文件)
三種方式:
1、 find path -type d -exec chmod 744{} \; (這句的句末有分號)
2、 find path -type d | xargs chmod 744
3、 chmod 755 `find -type d`
遞歸修改目錄下的所有普通文件的權(quán)限(只修改文件,不修改目錄)
三種方式:
1、 find path -type f -exec chmod 644 {} \;
2、 find path -type f | xargs chmod 644
3、 chmod 755 `find -type f`
遞歸刪除所有執(zhí)行類型的文件
例如,遞歸刪除當(dāng)前目錄下的 .exe 普通文件:
find . -name '*.exe' -type f -print -exec rm -rf {} \;
除了用 -exec 外,還可以利用管道來實現(xiàn),例如遞歸刪除當(dāng)前目錄下的 .deb 文件:
find . -name *.deb |xargs rm -rf
統(tǒng)計代碼行數(shù)
find . -regex ".*\.\(py\|html\|js\|css\)$" | xargs wc -l
該命令可能在其他平臺會失敗,那么可以用 grep 來過濾文件:
wc -l `find $path | grep ".*\.\(py\|html\|js\|css\)$"`
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
Apache JMeter 5.5 下載安裝及設(shè)置中文圖文教程
這篇文章主要介紹了Apache JMeter 5.5 下載安裝以及設(shè)置中文教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02
keeplive+mysql+drbd高可用架構(gòu)安裝步驟
本地(master)與遠(yuǎn)程主機(jī)(backup)的保證實時同步,如果本地系統(tǒng)出現(xiàn)故障時,遠(yuǎn)程主機(jī)上還會保留有一份相同的數(shù)據(jù),可以繼續(xù)使用.在高可用(HA)中使用DRBD功能,可以代替使用一個共享盤陣.因為數(shù)據(jù)同時存在于本地主機(jī)和遠(yuǎn)程主機(jī)上,切換時,遠(yuǎn)程主機(jī)只要使用它上面的那份備份數(shù)據(jù)2017-08-08
關(guān)于Windows 不能在 本地計算器 啟動 Apache2(phpstudy)
今天在自己的本子上準(zhǔn)備放多個虛擬站點。用的是#phpstudy#。在軟件自身的站點設(shè)置中,根據(jù)提示添加的多站點無效不知道是否和我的系統(tǒng)是Win7有關(guān)2012-09-09
Ubuntu18.04(linux)安裝MySQL的方法步驟
本篇文章主要介紹了Ubuntu18.04(linux)安裝MySQL的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
在Linux服務(wù)器和windows系統(tǒng)之間上傳與下載文件的方法
這篇文章主要介紹了在Linux服務(wù)器和windows系統(tǒng)之間上傳與下載文件的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04
基于ubuntu16 Python3 tensorflow(TensorFlow環(huán)境搭建)
這篇文章主要介紹了基于ubuntu16 Python3 tensorflow(TensorFlow環(huán)境搭建),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
Centos7 Mysql 5.6 多主一從 解決方案與詳細(xì)配置
這篇文章主要介紹了Centos7 Mysql 5.6 多主一從 解決方案與詳細(xì)配置,需要的朋友可以參考下2016-04-04
Linux系統(tǒng)下如何創(chuàng)建普通用戶并更改用戶組
這篇文章主要介紹了Linux系統(tǒng)下如何創(chuàng)建普通用戶并更改用戶組問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04

