Linux——查找過濾(tail、grep、find)


 

tail

基本格式:

tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]

參數解釋:

-f 該參數用於監視File文件增長。
-c Number 從 Number 字節位置讀取指定文件
-n Number 從 Number 行位置讀取指定文件。
-m Number 從 Number 多字節字符位置讀取指定文件,比方你的文件假設包括中文字,假設指定-c參數,可能導致截斷,但使用-m則會避免該問題。
-b Number 從 Number 表示的512字節塊位置讀取指定文件。
-k Number 從 Number 表示的1KB塊位置讀取指定文件。
File 指定操作的目標文件名稱

示例:

tail -300f shopbase.log #倒數300行並進入實時監聽文件寫入模式
tail -f catalina.out |grep "S201903161209220000001" #輸出指定文件的指定內容

 

grep

grep是根據文件的內容進行查找,會對文件的每一行按照給定的模式(patter)進行匹配查找。

基本格式:

grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN]...  [-f FILE]...  [FILE...]

[options]主要參數:

OPTIONS:
    -e: 使用正則搜索
    -i: 不區分大小寫
    -v: 查找不包含指定內容的行
    -w: 按單詞搜索
    -c: 統計匹配到的次數
    -n: 顯示行號
    -r: 逐層遍歷目錄查找
    -A: 顯示匹配行及前面多少行, 如: -A3, 則表示顯示匹配行及前3行
    -B: 顯示匹配行及后面多少行, 如: -B3, 則表示顯示匹配行及后3行
    -C: 顯示匹配行前后多少行,   如: -C3, 則表示顯示批量行前后3行
    --color: 匹配到的內容高亮顯示
    --include: 指定匹配的文件類型
    --exclude: 過濾不需要匹配的文件類型

pattern正則表達式主要參數:

\: 忽略正則表達式中特殊字符的原有含義。
^: 匹配正則表達式的開始行。
$: 匹配正則表達式的結束行。
\<: 從匹配正則表達 式的行開始。
\>: 到匹配正則表達式的行結束。
[ ]: 單個字符,如[A]即A符合要求 。
[ - ]: 范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
.: 所有的單個字符。
*: 有字符,長度可以為0。

示例:

grep 'forest' f.txt     #文件查找
grep 'forest' f.txt cpf.txt #多文件查找
grep 'log' /home/admin -r -n #目錄下查找所有符合關鍵字的文件
grep 'shopbase' /home/admin -r -n --include *.{vm,java} #指定文件后綴
grep 'shopbase' /home/admin -r -n --exclude *.{vm,java} #反匹配

 

find

find命令是根據文件的屬性進行查找,如文件名,文件大小,所有者,所屬組,是否為空,訪問時間,修改時間等。

基本格式:

find pathname -options [-print -exec -ok ...]

參數:

pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
-print:find命令將匹配的文件輸出到標准輸出。
-exec:find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' { } ;,注意{ }和;之間的空格。
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。

find[options]命令選項:
-name:按照文件名查找文件。
-perm:按照文件權限來查找文件。
-prune:使用這一選項可以使find命令不在當前指定的目錄中查找,如果同時使用-depth選項,那么-prune將被find命令忽略。
-user:按照文件屬主來查找文件。
-group:按照文件所屬的組來查找文件。
-mtime -n +n:按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
-nogroup:查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
-nouser:查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
-newer file1 ! file2:查找更改時間比文件file1新但比文件file2舊的文件。
-type

示例:

  • 按照文件名查找
find / -name httpd.conf  #在根目錄下查找文件httpd.conf,表示在整個硬盤查找
find /etc -name httpd.conf  #在/etc目錄下文件httpd.conf
find /etc -name 'srm'  #使用通配符(0或者任意多個)。表示在/etc目錄下查找文件名中含有字符串‘srm’的文件
find . -name 'srm'   #表示當前目錄下查找文件名開頭是字符串‘srm’的文件
  • 按照文件特征查找
find / -amin -10   # 查找在系統中最后10分鍾訪問的文件(access time)
find / -atime -2   # 查找在系統中最后48小時訪問的文件
find / -empty   # 查找在系統中為空的文件或者文件夾
find / -group cat   # 查找在系統中屬於group為cat的文件
find / -mmin -5   # 查找在系統中最后5分鍾里修改過的文件(modify time)
find / -mtime -1   #查找在系統中最后24小時里修改過的文件
find / -user fred   #查找在系統中屬於fred這個用戶的文件
find / -size +10000c  #查找出大於10000000字節的文件(c:字節,w:雙字,k:KB,M:MB,G:GB)
find / -size -1000k   #查找出小於1000KB的文件
  • 使用混合查找方式查找文件

參數有: !,-and(-a),-or(-o)

find /tmp -size +10000c -and -mtime +2   #在/tmp目錄下查找大於10000字節並在最后2分鍾內修改的文件
find / -user fred -or -user george   #在/目錄下查找用戶是fred或者george的文件文件
find /tmp ! -user panda  #在/tmp目錄中查找所有不屬於panda用戶的文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM