關注本頭條號,每天堅持更新原創干貨技術文章。
如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習
1. 前言
本文主要講解在Linux系統上如何使用find命令
find命令怎么用
2. `find`命令的使用方法
要開始搜索整個硬盤,您需要輸入以下內容:
find /
但是,如果您想開始搜索當前所在的文件夾,那么可以使用find命令以下語法:
find .
當您想在整個硬盤中按名稱搜索文件時,請使用find命令以下語法:
假設你要搜索的文件名為filename
find / -name filename
find命令的第一部分顯然是單詞find。
第二部分是從哪里開始搜索。即指定目錄,它會自動搜索指定目錄里的子目錄
第三部分是一個表達式,它決定要查找什么。
最后一部分是要找的文件名。
find命令使用方法
3. `find`命令搜索位置的快捷方式
find之后的第一個參數是要搜索的位置。雖然可以指定特定的目錄,但是大多數人使用元字符作為替代。使用這個命令的三個元字符包括:
句點:指定當前文件夾和所有嵌套文件夾
左斜杠/:指定整個文件系統
波浪符號~:指定活動用戶的主目錄
提示:搜索整個文件系統可能會產生許多訪問拒絕錯誤。一般的用戶賬號都會遇到權限的問題,這時,應該使用提升的特權運行該命令(例如,使用sudo)。
表達式
最常用的表達式是-name。name表達式允許搜索文件或文件夾的名稱。
然而,你也可以用其他的表達方式:
-amin n: 該文件最后一次訪問是在n分鐘前
-anewer: 最后一次訪問該文件的時間比修改該文件的時間晚
-atime n: 該文件最后一次被訪問是在n天前
-cmin n: 文件最后一次更改是在n分鐘前
-cnewer: 文件最后一次更改的時間比文件修改的時間更近
-ctime n: 文件最后一次更改是在n天前
-empty: 文件為空
-executable: 該文件是可執行的
-false: 總是錯誤的
-fstype type: 該文件位于指定的文件系統上
-gid n: 該文件屬于ID為n的組
-group groupname: 該文件屬于指定的組
-ilname pattern: 搜索符號行,但忽略大小寫
-iname pattern: 搜索文件但忽略大小寫
-inum n: 搜索具有指定節點的文件
-ipath path: 搜索路徑但忽略大小寫
-iregex expression: 搜索表達式但忽略大小寫
-links n: 搜索具有指定鏈接數量的文件
-lname name: 搜索符號鏈接
-mmin n: 文件的數據最后一次修改是在n分鐘之前
-mtime n: 文件的數據上次修改是在n天前
-name name: 搜索具有指定名稱的文件
-newer name: 搜索最近編輯的文件,而不是給定的文件
-nogroup: 搜索沒有組id的文件
-nouser: 搜索沒有附加用戶的文件
-path path: 查找路徑
-readable: 查找可讀的文件
-regex pattern: 搜索匹配正則表達式的文件
-type type: 搜索特定類型
-uid uid: 文件數字用戶id與uid相同
-user name: 文件由指定的用戶擁有
-writable: 搜索可寫入的文件
4. `find`命令使用案例
find命令使用案例
如何查找訪問文件超過一定天數的前幾天
要查找100天前訪問過的主文件夾中的所有文件,請:
find ~ -atime 100
如何找到空的文件和文件夾
要查找系統中的所有空文件和文件夾:
find / -empty
如何找到所有的可執行文件
要在你的電腦上找到所有可執行文件:
find / -exec
如何找到所有可讀的文件
要找到所有可讀的文件:
find / -read
模式
在搜索文件時,可以使用模式。例如,搜索擴展名為mp3的所有文件:
find / -name *.mp3
如何將Find命令的輸出發送到文件
find命令的主要問題是,它有時會返回太多的結果,無法一次性查看。通過管道將輸出輸出到tail命令,或者您可以將這些行輸出到一個文件中,如下所示:
find / -name *.mp3 -fprint nameoffiletoprintto
如何查找并對文件執行命令
同時搜索和編輯一個文件:
find / -name filename -exec nano '{}' \;
上面的命令搜索一個名為filename的文件,然后為它找到的文件運行nano編輯器。
5. 結論
通過本文,你應該對find命令怎么用有所了解了吧?這是Linux運維中最常用的命令了,一定要學習使用。
本文已同步至博客站,尊重原創,轉載時請在正文中附帶以下鏈接:
https://www.linuxrumen.com/rmxx/1291.html
關注本頭條號,每天堅持更新原創干貨技術文章。
如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習
1. 前言
本文主要講解如何在Linux系統下使用命令行工具模糊查找文件,本文的工具包括find命令的用法也介紹grep命令的使用方法,同時也有find與grep兩者結合,能更精確根據條件查找文件。
linux模糊查找文件命令
2. 根據文件名模糊查找文件
例如:
在目錄/var/zcwyou里,找到.txt后綴的文件,文件名大小寫敏感。即只能匹配.txt后綴的
[root@zcwyou ~]# find /var/zcwyou -name '*.txt'
在目錄/var/zcwyou里,找到.txt后綴的文件,忽略大小定。即可以匹配.txt后綴,也可以匹配.Txt后綴,也可以匹配.TXT后綴的文件。
[root@zcwyou ~]# find /var/zcwyou -iname '*.txt'
linux根據文件名模糊查找文件
3. 根據文件名和文件內容模糊查找文件
使用方法:
結合find命令與xargs和grep -i ‘目標匹配關鍵字’
案例1:
在當前目錄搜索文件內容含有某字符串(大小寫敏感)的文件:
語法:
find /etc/ -type f | xargs grep '目標關鍵詞'
案例2:
在/etc/目錄下,查找帶zcwyou關鍵詞的文件
[root@zcwyou ~]# find /etc/ -type f | xargs grep 'zcwyou'
可以找到以下文件和文件對應的內容:
/etc/group-:zcwyou:x:1000:
/etc/gshadow-:zcwyou:!!::
/etc/passwd-:zcwyou:x:1000:1000:zcwyou:/home/zcwyou:/bin/bash
/etc/group:zcwyou:x:1000:zcwyou
/etc/shadow-:zcwyou:
是不是非常高效?
案例3:
在當前目錄搜索文件內容含有某字符串(忽略大小寫)的特定文件:
借用find命令查找當前目錄下所有以.c后綴結尾的文件和子目錄里以.c后綴結尾的文件,并把結果以參數形式傳遞給grep,由grep進行搜索和過濾。
[root@zcwyou ~]#find . -type f -name ‘*.c’ | xargs grep -i '目標搜索關鍵詞'
linux根據文件名和文件內容模糊查找文件
4. 使用`find`命令模糊查找linux文件
在當前目錄下,模糊查找在系統中最后10分鐘訪問的文件
[root@zcwyou ~]# find . -amin -10
在當前目錄下,模糊查找在系統中最后48小時訪問的文件
[root@zcwyou ~]# find . -atime -2
在當前目錄下,查找在系統中為空的文件或者文件夾
[root@zcwyou ~]# find . -empty
在當前目錄下,查找在系統中屬于group cat的文件
[root@zcwyou ~]# find . -group cat
模糊查找在系統中最后5分鐘里修改過的文件
[root@zcwyou ~]# find . -mmin -5
查找在系統中最后24小時里修改過的文件
[root@zcwyou ~]# find . -mtime -1
使用find命令模糊查找linux文件
5. 根據用戶屬性模糊查找Linux文件
查找在系統中屬于作廢用戶的文件
[root@zcwyou ~]# find . -nouser
查找在系統中屬于zcwyou這個用戶的文件
[root@zcwyou ~]# find . -user zcwyou
根據用戶屬性模糊查找Linux文件
6. 通過文件大小模糊查找文件
查找根目錄下超過1M的文件,并打印
[root@zcwyou ~]# find / -size +1M -type f -print
查找當前目錄下等于500字節的文件,包括子目錄,并打印結果
[root@zcwyou ~]# find -size 500c -print
查找home目錄下小于600k的文件
[root@zcwyou ~]# find /home -size -600k -print
linux通過文件大小模糊查找文件
7. 通過文件新舊查找文件
查找比old.txt新的文件
[root@zcwyou ~]# find -newer "old.txt" -type f -print
查找比newer.txt舊的文件
[root@zcwyou ~]# find ! -newer "newer.log" -type f -print
查找比old.txt新,比newer.txt舊的文件
[root@zcwyou ~]# find -newer 'old.txt' ! -newer 'newer.txt' -type f -print
本文已同步至博客站,尊重原創,轉載時請在正文中附帶以下鏈接:
https://www.linuxrumen.com/rmxx/1137.html
點擊了解更多,快速查看更多的技術文章列表。
關注本頭條號,每天堅持更新原創干貨技術文章。
如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習
1. 前言
本文主要介紹Linux系統下有哪些全局搜索命令,并講解相關命令的使用方法與日常使用案例。
我們先來了解一下Linux下主要的5個全局搜索的命令工具。他們分別是find,locate,grep,which,whereis
其中,find是一個強大實時搜索工具,Linux支持的文件類型它都可以搜索到,locate一般是搜索文件,grep一般是搜索文本文件,which和whereis一般是用于搜索程序相關的文件內容。
linux全局搜索命令
2. Linux使用find命令全局搜索文件
find命令在某個目錄下查找。
一般使用格式:
find <pathname> <-option> <filetype> <action>
-pathname:所要查找的目錄及其所有子目錄(默認遞歸查找)。默認為當前目錄。
-option:指定參數。
-filetype:想要查找的文件類型。
-action:對查找結果進行的處理。
在linux的日常管理中,使用find命令全局搜索文件的使用頻率很高,熟練掌握以及靈活運用對提高工作效率很有幫助。
find的語法比較簡單,常用參數的就那么幾個,比如-name、-type、-ctime等。本文只是介紹其中一些常用的使用案例,如果需要更多的幫助,請參考find的使用手冊。
2.1 Linux使用`find`命令根據文件名全局搜索文件
搜索當前目錄下名字為mypic.png的文件
[root@zcwyou ~]# find . -name "mypic.png"
搜索當前目錄下所有的jpg文件
[root@zcwyou ~]# find . -name "*.jpg"
搜索當前目錄下的jpg文件和png文件
[root@zcwyou ~]# find . -name "*.jpg" -o -name "*.png"
搜索當前目錄下不是以png結尾的文件
[root@zcwyou ~]# find . ! -name "*.png"
2.2 使用`find`命令根據正則表達式全局查找文件
搜索當前目錄下,文件名以數字+png后綴結尾的文件。
[root@zcwyou ~]# find . -regex "\./*[0-9]+\.png"
2.3 使用`find`命令和指定的目錄路徑查找文件
搜索當前目錄下,路徑中包含folder的文件/路徑。
[root@zcwyou ~]# find . -path "*folder*"
2.4 使用`find`命令根據文件類型查找
通過-type進行文件類型的過濾。
比如,搜索當前目錄下,路徑中包含zcwyou的文件
[root@zcwyou ~]# find . -type f -path "*zcwyou*"
2.5 Linux根據搜索深度查找文件
搜索當前目錄下所有以txt后綴結尾的文件,不包括子目錄。
[root@zcwyou ~]# find . -maxdepth 1 -name "*.txt"
相對應的,也是mindepth選項。
[root@zcwyou ~]# find . -mindepth 2 -maxdepth 2 -name "*.png"
2.6 Linux使用`find`命令根據文件大小搜索文件
通過-size來過濾文件尺寸。支持的文件大小單元如下
- b 表示塊(512字節)
- c 表示字節
- w 表示字(2字節)
- k 表示千字節
- M 表示兆字節
- G 表示吉字節
比如,使用find命令搜索當前目錄下文件大小超過100M的文件
[root@zcwyou ~]# find . -type f -size +100M
2.7 根據文件的訪問、修改、變化時間全局搜索文件
支持下面的時間類型。
全局查找的案例1:搜索1天內被修改過的文件
[root@zcwyou ~]# find . -type f -mtime -1
全局查找的案例2:搜索最近1周內被訪問過的文件
[root@zcwyou ~]# find . -type f -atime -7
將日志目錄里超過一周的日志文件,移動到/tmp/log里。
[root@zcwyou ~]# find . -type f -mtime +7 -name "*.log" -exec mv {} /tmp/log \;
注意:{} 用于與-exec選項結合使用來匹配所有文件,然后會被替換為相應的文件名。
另外,\;用來表示命令結束,如果沒有加,則會有如下提示
find: -exec: no terminating ";" or "+"
關于find命令更多的使用方法請參考本站的另一帖
Linux find命令查找文件34個實用案例
根據文件的訪問、修改、變化時間全局搜索文件
3. Linux使用`locate`命令全局搜索文件
locate命令在系統的全局范圍內查找。
一般使用格式:
locate <-option> <filetype>
-option:指定參數。
-filetype:想要查找的文件類型。
locate常用參數
-d:指定要查找的數據庫路徑
-h: 顯示輔助訊息
-i:忽略大小寫
-q:安靜模式,不會顯示任何錯誤訊息。
-n:至多顯示 n個輸出。
-r: 使用正規運算式 做尋找的條件。
-o: 指定資料庫存的名稱。
-V: 顯示程式的版本訊息
簡單的使用案例:
[root@zcwyou ~]# locate abc.txt
/usr/share/123/456/abc.txt
提示
locate是從數據庫中讀取數據,而不是從文件系統中讀取。從數據庫中讀取時是讀取updatedb命令返回的結果:
而updatedb命令默認是一天(24小時)才自動運行一次,這就意味著如果是最新創建的文件,使用locate命令可能查找不到。
所以在使用locate命令前,先手動運行updatedb命令(需要root權限),非root用戶可以借助sudo取得root權限:
[root@zcwyou ~]# updatedb
Linux使用locate命令全局搜索文件
4. Linux使用`grep`命令對文本文件進行全局搜索關鍵字
和find及locate命令不同的是,grep命令是在指定文件中搜索特定的內容,然后將包含有這些匹配內容的行輸出到標準輸出。如果不指定文件名,則從標準輸入讀取內容。grep命令經常和find等命令結合使用,其中grep常充當“過濾器”的角色。
grep命令常用參數
-c: 只輸出匹配行的行數。
-h: 查詢多文件時不顯示文件名。
-I: 不區分大小寫(只適用于單字符)。
-n: 顯示匹配的行和行號。
-s: 不顯示 不存在或無匹配文本 的錯誤信息。
-v: 反向匹配,即顯示不包含匹配文本的所有行。
-R: 遞歸查詢,即連同子目錄中的文件一起查詢。
使用案例:
在當前目錄下遞歸查找包含字符串"hello"的所有文件,并顯示匹配行的行號
格式:grep -Rn "搜索的關鍵字" ~
例如:
[root@zcwyou ~]# grep -Rn "www.linurumen.com" ~
Linux使用grep命令對文本文件進行全局搜索關鍵字
5. 使用`which`命令全局搜索linux程序文件
which命令將在PATH變量指定的路徑中 查找某個系統命令的位置,并且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
例如,查看當前環境下使用的是哪個bash:
[root@zcwyou ~]# which passwd
6. 使用`whereis`命令全局搜索linux程序文件
whereis命令用來定位二進制文件(參數-b)、源代碼文件(參數-s)和幫助手冊文件(即man文件,參數-m)。如果省略參數,則返回所有信息。
whereis命令使用案例
[root@zcwyou ~]# whereis bash
7. 總結:
上面介紹的linux全局搜索命令有5個,每個都有特定的功能,每一個系統運維人員都要牢記和掌握它的使用方法,隨時能高效查找和搜索目標文件。
本文已同步至博客站,尊重原創,轉載時請在正文中附帶以下鏈接:
https://www.linuxrumen.com/rmxx/1139.html
點擊了解更多,快速查看更多的技術文章列表。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。