日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux之文件查找命令

發(fā)布時(shí)間:2025/3/20 linux 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux之文件查找命令 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Linux中常見的文件查詢命令有5個(gè)??

??which:在PATH變量指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并且返回第一個(gè)搜索結(jié)果;

????type:用于區(qū)分某個(gè)命令到底是由shell自帶的,還是由shell外部的獨(dú)立二進(jìn)制文件提供的。如果一個(gè)命令是外部命令,那么使用-p參數(shù),會(huì)顯示該命令的路徑,相當(dāng)于which命令。type命令其實(shí)不能算查找命令;

????whereis:只能用于程序名的搜索,而且只搜索二進(jìn)制文件(參數(shù)-b)、man說(shuō)明文件(參數(shù)-m)和源代碼文件(參數(shù)-s);

????locate:相當(dāng)于find -name,可快速查找文件;

????find:最常用和最強(qiáng)大的查找命令,可以用它找到任何想找的文件。

注意:

??? 通常find不很常用,因?yàn)樗俣嚷?#xff01;

??? 常都是先使用whereis或者locate來(lái)檢查,當(dāng)真的找不到了,才用find查找。

??? 是因?yàn)閣hereis與locate是利用數(shù)據(jù)庫(kù)來(lái)查找數(shù)據(jù),所以相當(dāng)快速,而且沒(méi)有實(shí)際查詢硬盤,比較節(jié)省時(shí)間。

????whereis和locate尋找的數(shù)據(jù)是由已創(chuàng)建的數(shù)據(jù)?/var/lib/?中查找。但是數(shù)據(jù)庫(kù)的更新默認(rèn)是每天更新一次(不同系統(tǒng)可能會(huì)有差異),所以當(dāng)新建文件或刪除文件后去查找該文件,whereis和locate會(huì)告訴你文件“not found”,因?yàn)楸仨毟聰?shù)據(jù)庫(kù)了。

??? 要手動(dòng)更新數(shù)據(jù)庫(kù)的方法也很簡(jiǎn)單,直接輸入updatedb即可。updatedb命令回去讀取/etc/updatedb.conf中的配置,然后去硬盤里面進(jìn)行查找文件名操作,最后更新整個(gè)數(shù)據(jù)庫(kù)文件。

1、which命令

[root @localhost ~]#which [-a] command 參數(shù)解析: -a:將所有由PATH目錄中可以找到的目錄均列出來(lái) [root@localhost Test]# which ifconfig /sbin/ifconfig [root@localhost Test]# su - rhx [rhx@localhost ~]$ which ifxonfig /usr/bin/which: no ifxonfig in (/usr/lib/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/rhx/bin)

為什么會(huì)顯示不存在呢?這是因?yàn)閣hich根據(jù)用戶所設(shè)置的PATH變量?jī)?nèi)的目錄去查找可執(zhí)行文件,所以不同的用戶所設(shè)置的PATH設(shè)置內(nèi)容就不一樣了。

2、whereis?

文件查找時(shí)優(yōu)先使用where和locate命令,當(dāng)找不到的時(shí)候才會(huì)使用find,因?yàn)閒ind命令查找速度較慢,因?yàn)閒ind命令直接查找硬盤,而whereis命令使用的查找方式不同,Linux將系統(tǒng)內(nèi)的所有文件都記錄在一個(gè)數(shù)據(jù)庫(kù)文件中,使用whereis 或者locate 命令會(huì)以此數(shù)據(jù)庫(kù)進(jìn)行查找,但是如果數(shù)據(jù)庫(kù)沒(méi)有更新,則會(huì)出現(xiàn)新建文件查詢不到的情況發(fā)生

[root @localhost ~]#where [-bmsu] command 參數(shù)解析: -b :只查找二進(jìn)制格式的文件 -m :只查找在說(shuō)明文件manual路徑下的文件 -s :只查找source文件 -u :查找不在上述三個(gè)選項(xiàng)當(dāng)中的其他特殊文件 [root@localhost rhx]# whereis ifconfig ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz [root@localhost rhx]# su - rhx [rhx@localhost ~]$ whereis ifconfig ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

發(fā)現(xiàn)whcih命令一般普通用戶找不到的ifoncifg,使用whereis 命令可以找到,這是因?yàn)橄到y(tǒng)中存在ifconfig這個(gè)文件,但是普通用戶的PATH中并沒(méi)有加入到/sbin

3、locate

[root @localhost ~]#locate [-ir] command 參數(shù)解析: -i :忽略大小寫 -r :后面可接正則表達(dá)式的顯示方式

注意:whereis 和 locate 命令查找的數(shù)據(jù)是由 創(chuàng)建的數(shù)據(jù)庫(kù)/var/lib/mlocate/里面的數(shù)據(jù)所查找的


但是數(shù)據(jù)庫(kù)的更新是一天/次,因此在未更新之前,找不到新建的文件,通過(guò)手動(dòng)進(jìn)行更新

[root@localhost ~]# updatedb

updatedb 命令回去讀取/etc/updatedb.conf 這個(gè)文件的設(shè)置,然后再去硬盤里進(jìn)行查找文件名的操作,接著進(jìn)行文件整個(gè)數(shù)據(jù)庫(kù)文件的更新

4、find

find命令的工作方式如下:沿著文件層次結(jié)構(gòu)向下遍歷,匹配符合條件的文件,執(zhí)行相應(yīng)find命令的工作方式如下:沿著文件層次結(jié)構(gòu)向下遍歷,匹配符合條件的文件,執(zhí)行相應(yīng)的操作。下面來(lái)看看find命令的各種應(yīng)用場(chǎng)景和基本用法。

[root @localhost ~]#find [PATH] [option] [option] [action] [root@localhost ~]# find . print


.指定當(dāng)前目錄,.. 指定父目錄。這是Unix文件系統(tǒng)中的約定用法。

-print指明打印出匹配文件的文件名(路徑)。當(dāng)使用 -print時(shí),'\n'作為用于對(duì)輸出的文件名進(jìn)行分隔。就算你忽略-print,find命令仍會(huì)打印出文件名。-print0指明使用'\0'作為匹配的文件名之間的定界符。當(dāng)文件名中包含換行符時(shí),這個(gè)方法就有用武之地了。find 非常強(qiáng)大,下面一一介紹

a、根據(jù)文件名或者正則表達(dá)式搜索

選項(xiàng)–name的參數(shù)指定了文件名所必須匹配的字符串。我們可以將通配符作為參數(shù)使用。*.txt能夠匹配所有以.txt結(jié)尾的文件名。選項(xiàng) -print在終端中打印出符合條件(例如 -name)的文件名或文件路徑,這些匹配條件通過(guò)find命令的選項(xiàng)給出。

[root@localhost Test]# find /home/ -name "*.txt" -print /home/rhx/Test/tmp.txt

find命令有一個(gè)選項(xiàng) -iname(忽略字母大小寫),該選項(xiàng)的作用和 -name類似,只不過(guò)在匹配名字時(shí)會(huì)忽略大小寫

.如果想匹配多個(gè)條件中的一個(gè),可以采用OR條件操作

[rhx@localhost Test]$ find . \( -name "*.txt" -o -name "*.sh" \) -print

這里由于使用轉(zhuǎn)義,將括號(hào)進(jìn)行轉(zhuǎn)義,括號(hào)左右兩邊需要加上括號(hào),否則會(huì)出現(xiàn)如下錯(cuò)誤


\(以及\)使用轉(zhuǎn)義,將 -name "*.txt" -o -name "*.pdf"視為一個(gè)整體


選項(xiàng)-path的參數(shù)可以使用通配符來(lái)匹配文件路徑。-name總是用給定的文件名進(jìn)行匹配。-path則將文件路徑作為一個(gè)整體進(jìn)行匹配。

[rhx@localhost Test]$ find /home -path "*/slynux/*" -print

正則表達(dá)式是通配符匹配的高級(jí)形式,它可以指定文本模式。我們借助這種模式來(lái)匹配文本及進(jìn)行打印。使用正則表達(dá)式進(jìn)行文本匹配的一個(gè)典型例子就是從一堆文本中解析出所有的E-mail地址。E-mail地址通常采用name@host.root這種形式,所以可以將其一般化為[a-z0-9]+@[a-z0-9]+.[a-z0-9]+。符號(hào)+ 指明在它之前的字符類中的字符可以出現(xiàn)一次或多次。

b、根據(jù)文件名或者正則表達(dá)式搜索

[rhx@localhost Test]$ find . ! -name "*.txt" -print . ./SleepingProgram.sh ./1.3.2.sh ./save ./save/SleepingProgram.sh ./save/DEBUG.sh ./save/ProgramRunningTime.sh ./ProgramRunningTime.sh ./sh1.3.sh ./1.11.1.sh ./arr.sh ./CharacterSeparator.sh ./Func.sh

c、根據(jù)目錄深度進(jìn)行搜索

? ? ? ?find命令在使用時(shí)會(huì)遍歷所有的子目錄。可以采用深度選項(xiàng)-maxdepth和 -mindepth來(lái)限制find命令遍歷的目錄深度。大多數(shù)情況下,只需要在當(dāng)前目錄中進(jìn)行搜索,無(wú)須再繼續(xù)向下查找。對(duì)于這種情況,使用深度選項(xiàng)來(lái)限制find命令向下查找的深度。如果只允許find在當(dāng)前目錄中查找,深度可以設(shè)置為1;當(dāng)需要向下兩級(jí)時(shí),深度可以設(shè)置為2;其他情況可以依次類推。可以用-maxzdepth指定最大深度。與此相似,也可以指定一個(gè)最小的深度,告訴find應(yīng)該從此處開始向下查找。如果想從第二級(jí)目錄開始搜索,那么就使用 -mindepth設(shè)置最小深度。使用下列命令將find命令向下的最大深度限制為1:

[rhx@localhost Test]$ find . -maxdepth 1 -name "s*" -print

該命令列出當(dāng)前目錄下的所有文件名以s打頭的文件。即使有子目錄,也不會(huì)被打印或遍歷。與之類似,-maxdepth 2最多向下遍歷兩級(jí)子目錄。-mindepth類似于 -maxdepth,不過(guò)它設(shè)置的是find開始遍歷的最小深度。這個(gè)選項(xiàng)可以用來(lái)查找并打印那些距離起始路徑一定深度的所有文件。例如,打印出深度距離當(dāng)前目錄至少兩個(gè)子目錄的所有文件:

[rhx@localhost Test]$ find . -mindepth 2 -name "s*" -print

d、根據(jù)文件類型進(jìn)行搜索

Unix類系統(tǒng)將一切都視為文件。文件具有不同的類型,例如普通文件、目錄、字符設(shè)備、塊設(shè)備、符號(hào)鏈接、硬鏈接、套接字以及FIFO等。

-type可以對(duì)文件搜索進(jìn)行過(guò)濾。借助這個(gè)選項(xiàng),我們可以為find命令指明特定的文件匹配類型。

[rhx@localhost Test]$ find . -type d -print . ./save

e、根據(jù)文件時(shí)間進(jìn)行搜索

Linux系統(tǒng)下,每一個(gè)文件都有三個(gè)時(shí)間戳,分別是atime,ctime,mtime

atime:訪問(wèn)時(shí)間,用戶最近一次訪問(wèn)該文件的時(shí)間

ctime:文件屬性(權(quán)限,所有者)最后一次變換的時(shí)間

mtime:修改時(shí)間,文件內(nèi)容最后一次被修改的時(shí)間

三個(gè)時(shí)間中以mtime使用較多,這就mtime進(jìn)行講解,其他的相同

-mtime n:n為數(shù)字表示n天前的那一天被修改的文件,注意 0 表示24小時(shí)之內(nèi)修改內(nèi)容的文件

-mtime +n:? 列出在n天之前(不包含n本身)被更改的文件名

-mtime -n:? 列出n天之內(nèi)(不包含n本身)被更改多的文件名

-newer file:file 是一個(gè)已經(jīng)存在的文件,列出比 file 文件還要新的文件名

[rhx@localhost Test]$ find . -mtime 0 . ./SleepingProgram.sh ./1.3.2.sh ./test.txt ./exam.txt ./save ./save/SleepingProgram.sh ./save/DEBUG.sh ./save/ProgramRunningTime.sh ./ProgramRunningTime.sh ./sh1.3.sh ./1.11.1.sh ./arr.sh ./CharacterSeparator.sh ./Func.sh ./tmp.txt

f、根據(jù)文件大小進(jìn)行搜索

根據(jù)文件大小進(jìn)行文件篩選

[rhx@localhost Test]$ find . -type f -size +2k #大于2k [rhx@localhost Test]$ find . -type f -size -2k #小于2k [rhx@localhost Test]$ find . -type f -size 2k #等于2k

g、根據(jù)文件權(quán)限和所有者進(jìn)行搜索

-uid n : n為數(shù)字,這個(gè)數(shù)字是用戶的賬號(hào)ID,即是UID,這個(gè)UID記錄在/etc/passwd中與賬號(hào)名稱對(duì)應(yīng)的數(shù)字 -gid n: n為數(shù)字,這個(gè)數(shù)字是用戶組名的ID,即是GID,這個(gè)GID記錄在/etc/group -user name :name 為用戶名,如 root用戶,普通用戶 rhx -nouser :尋找文件的所有者不存在 /etc/passwd 中 -nogroup :尋找文件的用戶組不在/etc/group在的文件 [rhx@localhost Test]$find /home -user rhx #找出用戶在系統(tǒng)中的所有文件,很常用[rhx@localhost Test]$find /home -nouser #找出不屬于任何人的文件

-perm mode:查找文件權(quán)限等于mode的文件 [rhx@localhost Test]$find . -type f -name "s*" ! -perm 777 -print

h、執(zhí)行的其他操作

-exec command:其中command為其他的命令,-exec 后面可以再接其他命令來(lái)處理查找的結(jié)果 -print :將結(jié)果打印到屏幕上這個(gè)操作時(shí)默認(rèn)的操作,因此不寫也會(huì)打印在屏幕上

注意:-exec 參數(shù)后面跟的是command命令,它的終止是以;為結(jié)束標(biāo)志的,所以這句命令后面的分號(hào)?是不可缺 少?的,考慮到各個(gè)系統(tǒng)中分號(hào)會(huì)有不同的意義,所以前面加反斜杠進(jìn)行轉(zhuǎn)義 即? \;{}?用于與-exec選項(xiàng)結(jié)合使用來(lái)匹配所有文件,然后會(huì)被替換為相應(yīng)的文件名.

[rhx@localhost ~]$ find . -type f -size -2k -exec ls -l {} \;

該語(yǔ)法較為特殊,這里一一解析:

{} 表示由 find 查找的內(nèi)容,其結(jié)果會(huì)放置在 {} 中

-exec ls -l? {} \;是關(guān)鍵字,表示 find? 其他命令的開始(-exec)一直到結(jié)束( \; ),這中間就是其他

例如將查找到的*.sh文件存放到一個(gè)新文件 all_sh_files.txt??中

[rhx@localhost Test]$ find . -type f -name "*.sh" -exec cat {} \;>all_sh_files.txt

總結(jié)

以上是生活随笔為你收集整理的Linux之文件查找命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产乱淫视频 | 精品国产乱码久久久久夜深人妻 | 黄色大视频 | 精品人妻伦一二三区久久 | 精品国产伦一区二区三区免费 | 亚洲五级片 | 天堂中文字幕免费一区 | 日韩高清在线播放 | va免费视频 | 国产免费播放 | 欧美日韩中文字幕一区二区 | 风流少妇 | 日韩中文在线字幕 | 欧美七区 | 国产免费观看av | 国产人妻精品一区二区三 | 成年午夜视频 | 日本综合久久 | 亚洲欧美国产高清 | 国产高清久久久 | 91av视频在线免费观看 | 欧美激情伊人 | av不卡一区二区 | 884aa四虎影成人精品一区 | 24小时日本在线www免费的 | 自拍偷拍亚洲区 | av手机在线看 | 黄频在线播放 | 女性毛片 | 日韩av在线天堂 | 日本理论片中文字幕 | 久久精品无码Av中文字幕 | 国产成人精品三级麻豆 | 久久人人爽人人爽人人 | 黄色长视频 | 精品国产69| 国产天天综合 | 99久久国产综合 | 国产一区二区三区成人 | 啪啪啪一区二区 | 国产精品免费一区二区三区都可以 | 不卡中文字幕在线 | 男人操女人的软件 | 日本大尺度激情做爰hd | 正在播放一区二区 | av在线播放器 | 99久久99九九99九九九 | 日韩毛片基地 | 成人小视频在线 | 欧美日韩精品久久久 | 大陆明星乱淫(高h)小说 | 美女下部无遮挡 | 成年网站 | 免费看黄色三级 | 亚洲在线综合 | 狠狠婷婷 | 日韩免费二区 | 1024福利| 99在线观看精品视频 | 欧美性tv| 美女网站免费视频 | 原创露脸88av| 日本黄色一级视频 | 激情网久久 | 少妇又紧又深又湿又爽视频 | 特黄一级视频 | 亚洲你我色| 在线天堂v | 国产精品边吃奶边做爽 | 亚洲三级在线观看 | 欧美性色a| 在线观看中文字幕一区二区 | 性猛交富婆╳xxx乱大交麻豆 | 人妻精品一区二区三区 | 国产精品女人精品久久久天天 | 中国女人内谢69xxxx免费视频 | 欧洲一级黄色片 | 亚洲午夜在线视频 | 国产精品一区二区在线播放 | 天天艹天天爽 | 色多多在线视频 | 国产熟女一区二区 | 午夜精品在线 | 久热免费在线 | 一区二区三区免费看 | 韩国av电影网站 | 亚洲婷婷网 | 香蕉网在线观看 | 国产男女裸体做爰爽爽 | 亚洲无圣光 | 天天毛片 | 欧洲天堂网 | 四虎在线影视 | 色导航在线 | 欧美老肥婆性猛交视频 | 免费福利小视频 | 日韩亚洲第一页 | 超碰国产人人 | 国产精品毛片一区二区在线看 |