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

歡迎訪問 生活随笔!

生活随笔

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

linux

EduCoder Linux之文件/目录搜索

發(fā)布時間:2024/5/17 linux 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EduCoder Linux之文件/目录搜索 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本實訓(xùn)主要講解Linux中文件查找和定位方法。

Linux系統(tǒng)中查找文件的方法不同于Windows系統(tǒng),在Windows系統(tǒng)中查找文件的方法比較容易,只要在桌面上點擊“開始”-“搜索”中就能按照各種方式進行查找,對于Linux新手來講,在Linux系統(tǒng)中查找一個文件比較空難,它不像Windows那樣方便,在Linux中通常使用命令來查找文件,常見查找文件的命令有l(wèi)ocate、which、whereis和find等。

本實訓(xùn)主要講解如何在Linux系統(tǒng)中查找文件/目錄。

第1關(guān):查詢命令-locate

  • 任務(wù)描述
  • 相關(guān)知識
    • locate
    • updatedb
  • 編程要求
  • 測試說明

任務(wù)描述

假設(shè),我們想找一個月前創(chuàng)建的一個文件,但是又不記得具體是放在什么位置,只記得文件的名稱,通過本關(guān)的學(xué)習(xí),我們將可以輕松的完成對文件/目錄的搜索。

本關(guān)任務(wù):使用locate命令查找系統(tǒng)中的文件。

相關(guān)知識

locate

locate命令用來查找文件或目錄。

locate命令要比其他查找文件命令(例如:find)快得多,原因在于它不搜索具體目錄,而是搜索一個數(shù)據(jù)庫/var/lib/mlocate/mlocate.db。

/var/lib/mlocate/mlocate.db這個數(shù)據(jù)庫中含有本地所有文件信息。Linux 系統(tǒng)自動創(chuàng)建這個數(shù)據(jù)庫,并且每天自動更新一次,因此,我們在用locate查找文件時,有時會找到已經(jīng)被刪除的數(shù)據(jù),或者剛剛建立文件,卻無法查找到,原因就是因為數(shù)據(jù)庫文件沒有被更新。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數(shù)據(jù)庫。

接下讓我們詳細(xì)的學(xué)習(xí)locate和updatedb的使用方法。

locate具體命令如下:

locate 命令參數(shù) 文件/目錄

常用命令參數(shù)如下:

  • -c, --count 只輸出找到的數(shù)量;
  • -d, --database DBPATH 使用DBPATH指定的數(shù)據(jù)庫,而不是默認(rèn)數(shù)據(jù)庫/var/lib/mlocate/mlocate.db
  • -i, --ignore-case 忽略大小寫;
  • -q, --quiet 安靜模式,不會顯示任何錯誤訊息;
  • -e, --existing 只顯示當(dāng)前存在的文件條目;
  • 案例演示1:

    搜索etc目錄下以pass開頭的文件或目錄,具體使用如下命令:

  • locate /etc/pass
  • 案例演示2:

    搜索包含passwd字母的文件或目錄總個數(shù),具體使用如下命令:

  • locate -c passwd
  • updatedb

    updatedb命令用來創(chuàng)建或更新locate命令所必需的數(shù)據(jù)庫文件。

    updatedb命令的執(zhí)行過程較長,因為在執(zhí)行時它會遍歷整個系統(tǒng)的目錄樹,并將所有的文件信息寫入locate數(shù)據(jù)庫文件中。

    具體命令如下:

    updatedb 命令參數(shù)

    常用參數(shù)如下:

  • -o<文件>:忽略默認(rèn)的數(shù)據(jù)庫文件,使用指定的slocate數(shù)據(jù)庫文件;
  • -U<目錄>:更新指定目錄的slocate數(shù)據(jù)庫;
  • -v:顯示執(zhí)行的詳細(xì)過程;
  • 執(zhí)行權(quán)限:updatedb必須以root權(quán)限才能執(zhí)行,如果是普通用戶想執(zhí)行updatedb時,需要在命令前加sudo命令來提升權(quán)限為root權(quán)限。

    案例演示1:

    新創(chuàng)建一個testFile文件,更新locate數(shù)據(jù)庫后使用locate命令定位該文件,具體使用如下命令:

  • touch testFile
  • locate testFile
  • sudo updatedb
  • locate testFile
  • 可以看到新創(chuàng)建文件后直接使用locate去查找是沒有任何結(jié)果的,只有更新數(shù)據(jù)庫后才能查找到新創(chuàng)建的文件。

    案例演示2:

    刪除testFile文件,更新locate數(shù)據(jù)庫后使用locate命令定位該文件,具體使用如下命令:

  • rm testFile
  • locate testFile
  • sudo updatedb -U ./
  • locate testFile
  • 第三條命令是只更新testFile所在目錄的數(shù)據(jù)庫,這樣速度比較快,如果不使用該參數(shù),則會更新整個文件系統(tǒng)的內(nèi)容。

    可以看到刪除文件后直接使用locate去查找是可以定位到的,但是此時文件已經(jīng)不存在了,原因是沒有馬上更新數(shù)據(jù)庫。

    編程要求

    在右側(cè)編輯器中補充代碼,使用locate命令查找系統(tǒng)中的文件,具體編程要求如下:

    • 使用locate命令查找系統(tǒng)中所有包括group字母的文件或目錄的總個數(shù);

    • 使用locate命令定位系統(tǒng)中最新創(chuàng)建的文件newFile。

    測試說明

    平臺會對你編寫的代碼進行評測:

    預(yù)期輸出:

  • 定位group文件/目錄個數(shù)成功
  • 定位newFile文件成功

  • 只有勝利才能生存,只有成功才有代價,只有耕耘才有收獲。——佚名

    開始你的任務(wù)吧,祝你成功!

    #!/bin/bash#在以下部分寫出完成任務(wù)的命令 #*********begin*********# locate -c group updatedb locate newFile #********* end *********#

    第2關(guān):查詢命令-which/whereis

    • 任務(wù)描述
    • 相關(guān)知識
      • which
      • whereis
    • 編程要求
    • 測試說明

    任務(wù)描述

    假設(shè)系統(tǒng)中存在兩個同名的可執(zhí)行文件gcc時,我們在命令行下輸入gcc后,但是我們不知道具體執(zhí)行的是那個gcc,通過本關(guān)的學(xué)習(xí),我們將會學(xué)習(xí)到如何定位一個命令的位置以及首選執(zhí)行命令的位置。

    本關(guān)任務(wù):使用which和whereis命令查找系統(tǒng)中的文件。

    相關(guān)知識

    在第一關(guān)中我們講解了locate命令的使用方法以及其原理,本關(guān)將介紹 Linux 另外兩個定位文件的命令,分別是which和whereis。

    which命令主要是用來查找系統(tǒng)PATH目錄下的可執(zhí)行文件,說白了就是查找那些我們已經(jīng)安裝好的可以直接執(zhí)行的命令。

    whereis命令可以用來查找二進制(命令)、源文件、man文件。與which不同的是這條命令可以是通過文件索引數(shù)據(jù)庫而非PATH來查找的,所以查找的面比which要廣。

    接下讓我們詳細(xì)的學(xué)習(xí)which和whereis的使用方法。

    which

    which命令用于查找并顯示給定命令的絕對路徑,環(huán)境變量PATH中保存了查找命令時需要遍歷的目錄。which指令會在環(huán)境變量$PATH設(shè)置的目錄里查找符合條件的文件。也就是說,使用which命令,就可以看到某個系統(tǒng)命令是否存在,以及執(zhí)行的到底是哪一個位置的命令。

    which是shell內(nèi)建命令,內(nèi)建命令要比系統(tǒng)論命令有比較高的執(zhí)行效率。

    具體命令如下:

    which 命令

    案例演示:

    使用which命令定位passwd命令的位置,具體使用如下命令:

  • which passwd
  • 可以看到passwd命令是存放在/usr/bin目錄下。

    whereis

    whereis命令用來定位指令的二進制程序、源代碼文件和man手冊頁等相關(guān)文件的路徑。

    具體命令如下:

    whereis 命令參數(shù) 文件名

    常用命令參數(shù)如下:

  • -b:只查找二進制文件;
  • -B<目錄>:只在設(shè)置的目錄下查找二進制文件;
  • -m:只查找說明文件;
  • -M<目錄>:只在設(shè)置的目錄下查找說明文件;
  • -s:只查找原始代碼文件;
  • -S<目錄>只在設(shè)置的目錄下查找原始代碼文件;
  • 案例演示1:

    使用whereis命令查找passwd命令所有信息,包括二進制文件位置、說明文件位置和源碼文件位置,具體使用如下命令:

  • whereis passwd
  • 案例演示2:

    使用whereis命令僅查找passwd命令二進制文件位置,具體使用如下命令:

  • whereis -b passwd
  • 可以看到passwd命令存在的位置有兩處,分別是/usr/bin/passwd和/usr/bin/X11/passwd,那么在我們執(zhí)行passwd時,如何確定是執(zhí)行的哪一個,此時我們就可以使用which命令來定位首先被執(zhí)行的命令位置。

    編程要求

    在右側(cè)編輯器中補充代碼,使用which和whereis命令定位命令位置,具體編程要求如下:

    • 使用which命令定位useradd命令的位置;

    • 使用whereis命令查詢useradd命令的所有信息,包括二進制文件位置、說明文件位置和源碼文件位置;

    • 使用whereis命令僅查找useradd命令說明文件位置。

    測試說明

    平臺將對編寫的代碼進程評測:

    預(yù)期輸出:

  • 定位useradd命令的位置成功
  • 定位useradd命令的所有信息位置成功
  • 定位useradd命令的說明文件位置成功

  • 成功的唯一秘訣——堅持最后一分鐘。——柏拉圖

    開始你的任務(wù)吧,祝你成功!

    #!/bin/bash#在以下部分寫出完成任務(wù)的命令 #***********begin*************# which useradd whereis useradd whereis -m useradd #************end**************#

    第3關(guān):查詢命令-find

    • 任務(wù)描述
    • 相關(guān)知識
      • find
        • -type 文件類型使用方法
        • size <+|-|=文件大小>使用方法
        • -exec使用方法
    • 編程要求
    • 測試說明

    任務(wù)描述

    通過前兩關(guān)的學(xué)習(xí),我們學(xué)會了如何定位一個文件/目錄,但是Linux系統(tǒng)還提供了一個搜索文件/目錄的命令,這個命令就是-find,find命令是每個學(xué)習(xí)Linux的用戶都會遇到的,通過本關(guān)的學(xué)習(xí),我們將會掌握find命令的常用用法以及高級用法。

    本關(guān)任務(wù):使用find命令查找系統(tǒng)中的文件/目錄。

    相關(guān)知識

    通過以上兩關(guān)的學(xué)習(xí),我們已經(jīng)學(xué)會了使用locate命令查詢系統(tǒng)中的文件/目錄,使用which和whereis命令來定位可執(zhí)行文件的位置。接下來讓我們一起學(xué)習(xí)查詢文件/目錄的最后一個命令-find。

    find命令與locate命令相比各有各的優(yōu)缺點,locate命令的優(yōu)點就是查找速度比find命令快的多,但是缺點也比較明顯,locate命令無法查找最新添加的文件/目錄以及會查找出來已經(jīng)過期的文件/目錄。

    相反find命令的優(yōu)點就是可以按照自定義的方法查找任何文件,缺點就是查詢速度比較慢,因為是通過遍歷硬盤來查找而不像locate命令事先建立好數(shù)據(jù)庫來進行查找。

    接下讓我們詳細(xì)的學(xué)習(xí)find的使用方法。

    find

    find命令用來在指定目錄下查找文件。任何位于參數(shù)之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設(shè)置任何參數(shù),則find命令將在當(dāng)前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。

    具體命令如下:

    find 查找目錄 查找參數(shù) 查找內(nèi)容

    常用查找參數(shù)如下:

  • -amin<+|-分鐘>:查找在指定時間曾被存取過的文件或目錄,單位以分鐘計算;
  • -atime<+|-24小時數(shù)>:查找在指定時間曾被存取過的文件或目錄,單位以24小時計算;
  • -cmin<+|-分鐘>:查找在指定時間之時被更改過的文件或目錄;
  • -ctime<+|-24小時數(shù)>:查找在指定時間之時被更改的文件或目錄,單位以24小時計算;
  • -mmin<+|-分鐘>:查找在指定時間曾被更改過的文件或目錄,單位以分鐘計算;
  • -mtime<+|-24小時數(shù)>:查找在指定時間曾被更改過的文件或目錄,單位以24小時計算;
  • -depth:從指定目錄下最深層的子目錄開始查找;
  • -exec<執(zhí)行指令>:假設(shè)find指令的回傳值為True,就執(zhí)行該指令;
  • -follow:排除符號連接;
  • -gid<群組識別碼>:查找符合指定群組識別碼的文件或目錄;
  • -group<群組名稱>:查找符合指定群組名稱的文件或目錄;
  • -uid<用戶識別碼>:查找符合指定的用戶識別碼的文件或目錄;
  • -user<擁有者名稱>:查找符和指定的擁有者名稱的文件或目錄;
  • -name<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式;
  • -iname<范本樣式>:此參數(shù)的效果和指定“-name”參數(shù)類似,但忽略字符大小寫的差別;
  • -inum<inode編號>:查找符合指定的inode編號的文件或目錄;
  • -newer<參考文件或目錄>:查找其更改時間較指定文件或目錄的更改時間更接近現(xiàn)在的文件或目錄;
  • -size<+|-|=文件大小>:查找符合指定的文件大小的文件;
  • -type<文件類型>:只尋找符合指定的文件類型的文件;
  • -a:是前后條件都要滿足;
  • -o :是滿足一個條件就好;
  • +:表示大于設(shè)置值的文件;
  • - :表示小于設(shè)置值的文件;
  • = :表示等于設(shè)置值的文件;
  • 注意:通常使用find命令的時候使用root權(quán)限,這樣就有權(quán)限查找任何目錄下的內(nèi)容,本平臺默認(rèn)權(quán)限是root權(quán)限,所有在本平臺上執(zhí)行find命令時不需要加sudo。

    案例演示1:

    查找/etc目錄下以my開頭以.conf結(jié)尾的文件或目錄,具體使用如下命令:

  • sudo find /etc -name "my*.conf"
  • *表示任意字母。

    案例演示2:

    查找/etc目錄下在超過7天前被訪問的文件或目錄,具體使用如下命令:

  • sudo find /etc -atime +7
  • 案例演示3:

    查找/etc目錄下恰好在7天前被訪問的文件或目錄,具體使用如下命令:

  • sudo find /etc -atime 7
  • 案例演示4:

    查找/etc目錄下在5分鐘內(nèi)被訪問的文件或目錄,具體使用如下命令:

  • sudo find /etc -amin -5
  • -type 文件類型使用方法

    常見文件類型:

  • f:普通文件
  • l:符號鏈接
  • d:目錄
  • c:字符設(shè)備
  • b:塊設(shè)備
  • s:套接字
  • pFifo
  • 案例演示:

    查找/etc目錄下以my開頭的目錄,具體使用如下命令:

  • sudo find /etc -name "my*" -a -type d
  • size <+|-|=文件大小>使用方法

    常見文件大小單位:

  • b —— 塊(512字節(jié))
  • c —— 字節(jié)
  • w —— 字(2字節(jié))
  • k —— 千字節(jié)
  • M —— 兆字節(jié)
  • G —— 吉字節(jié)
  • 案例演示:

    查找/etc目錄下大于1M的文件,具體使用如下命令:

  • sudo find /etc -size +1M
  • -exec使用方法

    具體使用方法如下:

    find … -exec 要執(zhí)行的命令 {} \;

    -exec選項后面跟隨著所要執(zhí)行的命令或腳本,然后是一個空格一對兒{}一個空格和一個\;。

    注意:要執(zhí)行的命令和{之間以及}與\;之間的空格是不能省略的。

    案例演示:

    查找/etc目錄下大于1M的文件/目錄的詳細(xì)信息,具體使用如下命令:

    sudo find /etc -size 1M -exec ls -l {} \;

    編程要求

    請在右側(cè)編輯器中補充代碼,使用find命令查找文件或目錄,具體編程要求如下:

    • 使用find命令查找當(dāng)前目錄中所有以.conf結(jié)尾的文件/目錄;

    • 使用find命令查找當(dāng)前目錄中所有以my開頭的目錄;

    • 使用find命令查找/root目錄中大于1M的文件;

    • 使用find命令查找/root目錄中類型為符號鏈接且文件名以 Link 結(jié)尾的所有鏈接詳細(xì)數(shù)據(jù)(提示使用ls -l查看文件詳細(xì)數(shù)據(jù))。

    測試說明

    平臺將對你編寫的代碼進行評測:

    注意:本平臺默認(rèn)權(quán)限是root,所以執(zhí)行命令不需要加sudo。

    預(yù)期輸出:

  • 查找當(dāng)前目錄中所有以.conf結(jié)尾的文件/目錄成功
  • 查找當(dāng)前目錄中所有以my開頭的目錄成功
  • 查找/root目錄中大于1M的文件成功
  • 查找/root目錄中所有符號鏈接的文件詳細(xì)數(shù)據(jù)成功

  • 勝利者往往是從堅持最后五分鐘的時間中得來成功。——牛頓

    開始你的任務(wù)吧,祝你成功!

    #!/bin/bash#在以下部分寫出完成任務(wù)的命令 #***********begin*************# find . -name "*.conf" find . -name "my*" find /root -type f -size +1M find /root -type l -name "*Link" -exec ls -l {} \; #************end**************#

    總結(jié)

    以上是生活随笔為你收集整理的EduCoder Linux之文件/目录搜索的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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