Linux下AWK、SED纠炮、GREP月趟、FIND命令詳解

AWK

AWK是一個(gè)優(yōu)良的文本處理工具,Linux和Unix環(huán)境中現(xiàn)有的功能最強(qiáng)大的數(shù)據(jù)處理引擎之一恢口。

  • 語(yǔ)法
awk [選項(xiàng)參數(shù)] 'script' var=value file(s)
或
awk [選項(xiàng)參數(shù)] -f scriptfile var=value file(s)
  • 調(diào)用方式
    • awk 命令行
      你可以象使用普通UNIX 命令一樣使用awk孝宗,在命令行中你也可以使用awk 程序設(shè)計(jì)語(yǔ)言,耕肩,這種方法一般只用于解決簡(jiǎn)單的問(wèn)題因妇。當(dāng)然问潭,你也可以在shell script 程序中引用awk 命令行甚至awk 程序腳本。

    • 使用-f 選項(xiàng)調(diào)用awk 程序
      awk 允許將一段awk 程序?qū)懭胍粋€(gè)文本文件沙峻,然后在awk 命令行中用-f 選項(xiàng)調(diào)用并執(zhí)行這段程序睦授。

    • 利用命令解釋器調(diào)用awk 程序
      利用UNIX 支持的命令解釋器功能,我們可以將一段awk 程序?qū)懭胛谋疚募ふ缓笤谒牡谝恍屑由?!/bin/awk –f去枷。

  • 參數(shù)相關(guān)
FILENAME:awk瀏覽的文件名
FNR:awk瀏覽的文件的記錄數(shù)
FS:設(shè)置輸入域的分隔符
NF:瀏覽域的個(gè)數(shù)
NR:已讀的記錄數(shù)
OFS:輸出域分隔符
ORS:輸出記錄分隔符
RS:控制記錄分隔符
$0:指整條記錄
$1:第一個(gè)作用域及第一列
~:匹配,與==相比不是精確比較
!~:不匹配是复,不精確比較
==:等于删顶,必須全部相等,精確比較
!=:不等于淑廊,精確比較
&&:邏輯與
||:邏輯或
+:匹配時(shí)表示1個(gè)或1個(gè)以上
/[0-9][0-9]+/:兩個(gè)或兩個(gè)以上數(shù)字
/[0-9][0-9]*/:一個(gè)或一個(gè)以上數(shù)字
  • 案例
過(guò)濾/etc/passwd文件逗余,以冒號(hào)為分隔符,過(guò)濾出第一列
awk -F ':' '{print $1}' /etc/passwd

統(tǒng)計(jì)/etc/passwd文件中季惩,一共有多少個(gè)用戶
awk '{count++;print $0;} END {print "user count is:",count} ' /etc/passwd

統(tǒng)計(jì)/etc/passwd文件,打印出文件名录粱,已讀的記錄數(shù),以冒號(hào)為分隔符画拾,每行瀏覽域的個(gè)數(shù)啥繁,每行記錄的內(nèi)容
awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF, ",linecontent:" $0}' /etc/passwd

統(tǒng)計(jì)/etc/passwd文件,從0開始青抛,依次往下瀏覽旗闽,一直到最后并打印出循環(huán)了多少次
awk 'BEGIN {count=0;print "start use count is:",count} {count++;print $0;} END {print "user count is:",count} '  /etc/passwd

統(tǒng)計(jì)當(dāng)前目錄下,所有文件總大小蜜另,并輸出到all file siz is
ll |awk 'BEGIN {size=0} {size=size+$5} END {print "all file size is:",size}'

統(tǒng)計(jì)當(dāng)前目錄下适室,除去4096大小的文件外,所有文件大小的總和举瑰,輸出到all file siz is
ll |awk 'BEGIN {size=0} {if ($5 !=4096) size=size+$5} END {print "all file size is:",size}'

統(tǒng)計(jì)/etc/passwd文件,在每行行首從0開始記錄瀏覽行數(shù)
awk -F ':' 'BEGIN {null=0} {name[null]=$1;null++} END {for(i=0;i<NR;i++) print i,name[i]}' /etc/passwd

統(tǒng)計(jì)netstat -anp 狀態(tài)為L(zhǎng)ISTEN和CONNECT的連接數(shù)量分別是多少
netstat -anp|awk '$6~/LISTEN|CONNECTED/{sum[$6]++} END{for (i in sum) printf "%-10s %-6s %-3s \n", i," ",sum[i]}'

計(jì)算/home目錄下捣辆,普通文件的大小,使用KB作為單位
ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is:",sum/1024,"KB"}'
ls -l|awk 'BEGIN{sum=0} !/^d/{sum+=$5} END{print "total size is:",int(sum/1024),"KB"}'         //int是取整的意思

統(tǒng)計(jì)/home目錄下不同用戶的普通文件的總數(shù)是多少此迅?
ls -l|awk 'NR!=1 && !/^d/{sum[$3]++} END{for (i in sum) printf "%-6s %-5s %-3s \n",i," ",sum[i]}'   
mysql        199 
root           374 

統(tǒng)計(jì)/home目錄下不同用戶的普通文件的大小總size是多少罪帖?
ls -l|awk 'NR!=1 && !/^d/{sum[$3]+=$5} END{for (i in sum) printf "%-6s %-5s %-3s %-2s \n",i," ",sum[i]/1024/1024,"MB"}'
SED

SED即Stream Editor文本流編輯,是一個(gè)“非交互式”面向字符流的編輯器邮屁。能同時(shí)處理多個(gè)文件多行的內(nèi)容,可以不對(duì)原文件改動(dòng)菠齿,把整個(gè)文件輸入到屏幕佑吝,可以把只匹配到模式的內(nèi)容輸入到屏幕上。還可以對(duì)原文件改動(dòng)绳匀,但是不會(huì)再屏幕上返回結(jié)果芋忿。

  • 語(yǔ)法
sed [options] 'command' file(s)
或者
sed [options] -f scriptfile file(s)
  • 選項(xiàng)
 -e :直接在命令行模式上進(jìn)行sed動(dòng)作編輯炸客,此為默認(rèn)選項(xiàng);
 -f :將sed的動(dòng)作寫在一個(gè)文件內(nèi),用–f filename 執(zhí)行filename內(nèi)的sed動(dòng)作;
 -i :直接修改文件內(nèi)容;
 -n :只打印模式匹配的行;
 -r :支持?jǐn)U展表達(dá)式;
 -h或--help:顯示幫助;
 -V或--version:顯示版本信息;
 -a :新增戈钢, a 的后面可以接字串痹仙,而這些字串會(huì)在新的一行出現(xiàn)(目前的下一行);
 -c :取代, c 的后面可以接字串殉了,這些字串可以取代 n1,n2 之間的行;
 -d ∶刪除开仰,因?yàn)槭莿h除啊,所以 d 后面通常不接任何咚咚;
 -i ∶插入薪铜, i 的后面可以接字串众弓,而這些字串會(huì)在新的一行出現(xiàn)(目前的上一行);
 -p ∶列印,亦即將某個(gè)選擇的資料印出;通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)作;
 -s ∶取代隔箍,可以直接進(jìn)行取代的工作哩;通常這個(gè) s 的動(dòng)作可以搭配正規(guī)表示法;
  • 常用命令
a\\ 在當(dāng)前行下面插入文本谓娃。
i\\ 在當(dāng)前行上面插入文本。
c\\ 把選定的行改為新的文本蜒滩。
d 刪除滨达,刪除選擇的行。
D 刪除模板塊的第一行俯艰。
s 替換指定字符
h 拷貝模板塊的內(nèi)容到內(nèi)存中的緩沖區(qū)捡遍。
H 追加模板塊的內(nèi)容到內(nèi)存中的緩沖區(qū)。
g 獲得內(nèi)存緩沖區(qū)的內(nèi)容蟆炊,并替代當(dāng)前模板塊中的文本稽莉。
G 獲得內(nèi)存緩沖區(qū)的內(nèi)容,并追加到當(dāng)前模板塊文本的后面涩搓。
l 列表不能打印字符的清單污秆。
n 讀取下一個(gè)輸入行,用下一個(gè)命令處理新的行而不是用第一個(gè)命令昧甘。
N 追加下一個(gè)輸入行到模板塊后面并在二者間嵌入一個(gè)新行良拼,改變當(dāng)前行號(hào)碼。
p 打印模板塊的行充边。
P(大寫) 打印模板塊的第一行庸推。
q 退出Sed。
b lable 分支到腳本中帶有標(biāo)記的地方浇冰,如果分支不存在則分支到腳本的末尾贬媒。
r file 從file中讀行。
t label if分支肘习,從最后一行開始际乘,條件一旦滿足或者T,t命令漂佩,將導(dǎo)致分支到帶有標(biāo)號(hào)的命令處脖含,或者到腳本的末尾罪塔。
T label 錯(cuò)誤分支,從最后一行開始养葵,一旦發(fā)生錯(cuò)誤或者T征堪,t命令,將導(dǎo)致分支到帶有標(biāo)號(hào)的命令處关拒,或者到腳本的末尾佃蚜。
w file 寫并追加模板塊到file末尾。 
W file 寫并追加模板塊的第一行到file末尾夏醉。 
! 表示后面的命令對(duì)所有沒有被選定的行發(fā)生作用爽锥。 
= 打印當(dāng)前行號(hào)碼。 
'#' 把注釋擴(kuò)展到下一個(gè)換行符以前畔柔。 
  • 替換標(biāo)記
g 表示行內(nèi)全面替換氯夷。 
p 表示打印行。 
w 表示把行寫入一個(gè)文件靶擦。 
x 表示互換模板塊中的文本和緩沖區(qū)中的文本腮考。 
y 表示把一個(gè)字符翻譯為另外的字符(但是不用于正則表達(dá)式)
\\1 子串匹配標(biāo)記
& 已匹配字符串標(biāo)記
  • sed元字符集
^ 匹配行開始,如:/^sed/匹配所有以sed開頭的行玄捕。
$ 匹配行結(jié)束踩蔚,如:/sed$/匹配所有以sed結(jié)尾的行。
. 匹配一個(gè)非換行符的任意字符枚粘,如:/s.d/匹配s后接一個(gè)任意字符馅闽,最后是d。
* 匹配0個(gè)或多個(gè)字符,如:'/*sed/'匹配所有模板是一個(gè)或多個(gè)空格后緊跟sed的行。
[] 匹配一個(gè)指定范圍內(nèi)的字符逃默,如/[ss]ed/匹配sed和Sed。 
[^] 匹配一個(gè)不在指定范圍內(nèi)的字符暴凑,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個(gè)字母開頭,緊跟ed的行赘来。
\\(..\\) 匹配子串现喳,保存匹配的字符,如s/\\(love\\)able/\\1rs犬辰,loveable被替換成lovers嗦篱。
& 保存搜索字符用來(lái)替換其他字符,如s/love/**&**/幌缝,love這成**love**默色。
\\< 匹配單詞的開始,如:/\\\\> 匹配單詞的結(jié)束,如/love\\>/匹配包含以love結(jié)尾的單詞的行腿宰。
x\\{m\\} 重復(fù)字符x,m次缘厢,如:/0\\{5\\}/匹配包含5個(gè)0的行吃度。
x\\{m,\\} 重復(fù)字符x,至少m次贴硫,如:/0\\{5,\\}/匹配至少有5個(gè)0的行椿每。
x\\{m,n\\} 重復(fù)字符x,至少m次英遭,不多于n次间护,如:/0\\{5,10\\}/匹配5~10個(gè)0的行。
  • sed匹配模式正則
sed '5 q' /etc/passwd  #打印前5行  
sed -n '/r*t/p' /etc/passwd  #打印匹配r有0個(gè)或者多個(gè)挖诸,后接一個(gè)t字符的行  
sed -n '/.r.*/p' /etc/passwd  #打印匹配有r的行并且r后面跟任意字符  
sed -n '/o*/p' /etc/passwd  #打印o字符重復(fù)任意次  
sed -n '/o\{1,\}/p' /etc/passwd  #打印o字重復(fù)出現(xiàn)一次以上  
sed -n '/o\{1,3\}/p' /etc/passwd  #打印o字重復(fù)出現(xiàn)一次到三次之間以上  
  • sed對(duì)文件內(nèi)容增加(-i修改源文件)
cat file.txt
Python
Django
Flask
Hello World

1. 匹配字符行的行首添加
sed '/Python/s/^/Lain /' file.txt
Lain Python
Django
Flask
Hello World

2. 匹配字符行的行尾添加
sed 's/Python/& Lain/' file.txt
Python Lain
Django
Flask
Hello World

3. 匹配字符前添加
sed 's/World/Lain &/' file.txt
Python
Django
Flask
Hello Lain World

4. 匹配字符后添加
sed 's/World/& Lain/' file.txt
Python
Django
Flask
Hello World Lain

5. 匹配行的上一行添加
sed '/Flask/i\HTML' file.txt
或者
sed '/Flask/i HTML' file.txt
Python
Django
HTML
Flask
Hello World

6. 匹配行的下一行添加
sed '/Flask/a HTML' file.txt
或者
sed '/Flask/a\HTML' file.txt
Python
Django
Flask
HTML
Hello World

7. 所有行行首添加
sed 's/^/Lain /g' file.txt
或者
sed 's/^/Lain /' file.txt
Lain Python
Lain Django
Lain Flask
Lain Hello World

8. 所有行行尾添加
sed 's/$/ Lain/' file.txt
或者
sed 's/$/ Lain/g' file.txt
Python Lain
Django Lain
Flask Lain
Hello World Lain

9.指定行添加內(nèi)容
sed '1,2s/$/ Lain/g' file.txt  #1,2行行尾添加
sed '1,2s/^/# /' file.txt  #1,2行行首添加
  • sed對(duì)文件內(nèi)容刪除(-i修改源文件)
cat file.txt
#Python web
#Django web
Flask web
Hello World web
JavaScript
PHP Nginx

1. 刪除行首是'#'的行
sed '/^#/d' file.txt
Flask web
Hello World web
JavaScript
PHP Nginx

2. 刪除行首不是'#'的行
sed '/^#/!d' file.txt
#Python web
#Django web

3. 刪除行
sed '1d' file.txt  #刪除第一行
sed '$d' file.txt  #刪除最后一行
sed '1,2d' file.txt  #刪除指定行

4. 刪除匹配字符所在的行
sed '/Hello/d' file.txt
#Python web
#Django web
Flask web
JavaScript
PHP Nginx
  • sed對(duì)文件內(nèi)容修改(-i修改源文件)
cat file.txt
#Python web
#Django web
Flask web
Hello World web
JavaScript
PHP Nginx

1. 更換匹配字符所在行
sed '/Flask/c\LAIN' file.txt
#Python web
#Django web
LAIN
Hello World web
JavaScript
PHP Nginx

2. 更換文件中所有匹配字符
sed 's/web/core/' file.txt
#Python core
#Django core
Flask core
Hello World core
JavaScript
PHP Nginx

3. 更換匹配字符所在行的關(guān)鍵字
sed '/Flask/s@web@core@' file.txt
或者
sed '/Flask/s#web#core#' file.txt
#Python web
#Django web
Flask core
Hello World web
JavaScript
PHP Nginx

4. 替換匹配關(guān)鍵字所在行的'#'
sed '/web/s/#//' file.txt
Python web
Django web
Flask web
Hello World web
JavaScript
PHP Nginx

sed參考https://www.cnblogs.com/ctaixw/p/5860221.html

GREP

GREP(global search regular expression(RE) and print out the line,全面搜索正則表達(dá)式并把行打印出來(lái))是一種強(qiáng)大的文本搜索工具汁尺,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來(lái)多律。
grep的工作方式痴突,它在一個(gè)或多個(gè)文件中搜索字符串模板。如果模板包括空格狼荞,則必須被引用辽装,模板后的所有字符串被看作文件名。搜索的結(jié)果被送到屏幕相味,不影響原文件內(nèi)容拾积。
grep可用于shell腳本,因?yàn)間rep通過(guò)返回一個(gè)狀態(tài)值來(lái)說(shuō)明搜索的狀態(tài)丰涉,如果模板搜索成功拓巧,則返回0,如果搜索不成功昔搂,則返回1玲销,如果搜索的文件不存在,則返回2摘符。我們利用這些返回值就可進(jìn)行一些自動(dòng)化的文本處理工作贤斜。

  • 語(yǔ)法
grep [OPTION]... PATTERN [FILE]...
  • 匹配模式
 -E, --extended-regexp     擴(kuò)展正則表達(dá)式egrep
 -F, --fixed-strings       一個(gè)換行符分隔的字符串的集合fgrep
 -G, --basic-regexp        基本正則
 -P, --perl-regexp         調(diào)用的perl正則
 -e, --regexp=PATTERN      后面根正則模式,默認(rèn)無(wú)
 -f, --file=FILE           從文件中獲得匹配模式
 -i, --ignore-case         不區(qū)分大小寫
 -w, --word-regexp         匹配整個(gè)單詞
 -x, --line-regexp         匹配整行
 -z, --null-data           一個(gè) 0 字節(jié)的數(shù)據(jù)行逛裤,但不是空行
 -s, --no-messages         不顯示錯(cuò)誤信息
 -v, --invert-match        顯示不匹配的行
 -V, --version             顯示版本號(hào)
 --help                    顯示幫助信息
 --mmap                    use memory-mapped input if possible
  • 控制項(xiàng)
輸入控制:
 -m, --max-count=NUM       匹配的最大數(shù)
 -b, --byte-offset         打印匹配行前面打印該行所在的塊號(hào)碼瘩绒。
 -n, --line-number         顯示的加上匹配所在的行號(hào)
 --line-buffered           刷新輸出每一行
 -H, --with-filename       當(dāng)搜索多個(gè)文件時(shí),顯示匹配文件名前綴
 -h, --no-filename         當(dāng)搜索多個(gè)文件時(shí)带族,不顯示匹配文件名前綴
 --label=LABEL             print LABEL as filename for standard input
 -o, --only-matching       只顯示一行中匹配PATTERN 的部分
 -q, --quiet, --silent     不顯示任何東西
 --binary-files=TYPE       假定二進(jìn)制文件的TYPE 類型锁荔;TYPE 可以是`binary', `text', 或`without-match'
 -a, --text                匹配二進(jìn)制的東西
 -I                        不匹配二進(jìn)制的東西
 -d, --directories=ACTION  目錄操作,讀取蝙砌,遞歸阳堕,跳過(guò)
 -D, --devices=ACTION      設(shè)置對(duì)設(shè)備跋理,F(xiàn)IFO,管道的操作,讀取恬总,跳過(guò)
 -R, -r, --recursive       遞歸調(diào)用
 --include=PATTERN         只查找匹配FILE_PATTERN 的文件
 --exclude=PATTERN         跳過(guò)匹配FILE_PATTERN 的文件和目錄
 --exclude-from=FILE       跳過(guò)所有除FILE 以外的文件
 -L, --files-without-match 匹配多個(gè)文件時(shí)前普,顯示不匹配的文件名
 -l, --files-with-matches  匹配多個(gè)文件時(shí),顯示匹配的文件名
 -c, --count               顯示匹配了多少次
 -Z, --null                在FILE 文件最后打印空字符

文件控制:
 -B, --before-context=NUM  打印匹配本身以及前面的幾個(gè)行由NUM控制
 -A, --after-context=NUM   打印匹配本身以及隨后的幾個(gè)行由NUM控制
 -C, --context=NUM         打印匹配本身以及隨后壹堰,前面的幾個(gè)行由NUM控制
 -NUM                      根-C的用法一樣的
 --color[=WHEN],
 --colour[=WHEN]           使用標(biāo)志高亮匹配字串拭卿;
 
 -U, --binary              使用標(biāo)志高亮匹配字串;
 -u, --unix-byte-offsets   當(dāng)CR 字符不存在贱纠,報(bào)告字節(jié)偏移(MSDOS 模式)
  • 案例
- 測(cè)試文件
cat test.txt
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
colord:x:996:994:User for colord:/var/lib/colord:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
unbound:x:995:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
libstoragemgmt:x:993:990:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
geoclue:x:992:989:User for geoclue:/var/lib/geoclue:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
setroubleshoot:x:991:988::/var/lib/setroubleshoot:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
chrony:x:990:985::/var/lib/chrony:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
pcp:x:989:984:Performance Co-Pilot:/var/lib/pcp:/sbin/nologin
gnome-initial-setup:x:988:983::/run/gnome-initial-setup/:/sbin/nologin

1. 匹配含有'mysql'的行
grep mysql test.txt
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

2. 匹配以'mysql'或者'tss'開頭的行
grep '^\(tss\|mysql\)' test.txt
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

3. 遞歸匹配'soft'目錄下所有含有'Daemon'的行并顯示行號(hào)
grep -Frn 'Daemon' /soft

4. 不顯示以'mysql'或者'tss'開頭的行
grep -n '^\(root\|mysql\)' test.txt

5. 不區(qū)分大小寫匹配
grep -i '^\(ROOT\|MYSQL\)' test.txt
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

6. 匹配關(guān)鍵字并打印前后
grep -A3 'gdm' test.txt  #A后三行
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
grep -B3 'gdm' test.txt  #B前三行
grep -B3 'gdm' test.txt  #C前后三行
FIND

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

  • 語(yǔ)法
find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
  • 參數(shù)
pathname: find命令所查找的目錄路徑刽射。例如用.來(lái)表示當(dāng)前目錄,用/來(lái)表示系統(tǒng)根目錄剃执。
-print:  find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出誓禁。
-exec:   find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。相應(yīng)命令的形式為'command' { } \;肾档,注意{ }和\摹恰;之間的空格。
-ok:     和-exec的作用相同怒见,只不過(guò)以一種更為安全的模式來(lái)執(zhí)行該參數(shù)所給出的shell命令俗慈,在執(zhí)行每一個(gè)命令之前,都會(huì)給出提示遣耍,讓用戶來(lái)確定是否執(zhí)行闺阱。
-print    將查找到的文件輸出到標(biāo)準(zhǔn)輸出
-exec   command   {} \;      —–將查到的文件執(zhí)行command操作,{} 和 \;之間有空格;

-mount, -xdev : 只檢查和指定目錄在同一個(gè)文件系統(tǒng)下的文件舵变,避免列出其它文件系統(tǒng)中的文件
-amin n : 在過(guò)去 n 分鐘內(nèi)被讀取過(guò)
-anewer file : 比文件 file 更晚被讀取過(guò)的文件
-atime n : 在過(guò)去 n 天過(guò)讀取過(guò)的文件
-cmin n : 在過(guò)去 n 分鐘內(nèi)被修改過(guò)
-mtime n : 按文件更改時(shí)間來(lái)查找文件酣溃,-n指n天以內(nèi),+n指n天以前
-cnewer file :比文件 file 更新的文件
-ctime n : 在過(guò)去 n 天過(guò)修改過(guò)的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的文件纪隙,ipath 會(huì)忽略大小寫
-name name, -iname name : 文件名稱符合 name 的文件赊豌。iname 會(huì)忽略大小寫
-depth : 使查找在進(jìn)入子目錄前先行查找完本目錄
-fstype : 查位于某一類型文件系統(tǒng)中的文件,這些文件系統(tǒng)類型通趁嘣郏可 在/etc/fstab中找到
-mount : 查文件時(shí)不跨越文件系統(tǒng)mount點(diǎn)
-follow : 如果遇到符號(hào)鏈接文件碘饼,就跟蹤鏈接所指的文件
-cpio : 查位于某一類型文件系統(tǒng)中的文件,這些文件系統(tǒng)類型通常可 在/etc/fstab中找到
-prune : 忽略某個(gè)目錄
  • 案例
find   -name april*                     在當(dāng)前目錄下查找以april開始的文件
find   -name   april*   fprint file        在當(dāng)前目錄下查找以april開始的文件艾恼,并把結(jié)果輸出到file中
find   -name ap* -o -name may*   查找以ap或may開頭的文件
find   /mnt   -name tom.txt   -ftype vfat   在/mnt下查找名稱為tom.txt且文件系統(tǒng)類型為vfat的文件
find   /mnt   -name t.txt ! -ftype vfat   在/mnt下查找名稱為tom.txt且文件系統(tǒng)類型不為vfat的文件
find   /tmp   -name wa* -type l            在/tmp下查找名為wa開頭且類型為符號(hào)鏈接的文件
find   /home   -mtime   -2                 在/home下查最近兩天內(nèi)改動(dòng)過(guò)的文件
find   /home    -atime -1                  查1天之內(nèi)被存取過(guò)的文件
find   /home -mmin    +60                  在/home下查60分鐘前改動(dòng)過(guò)的文件
find   /home   -amin   +30                  查最近30分鐘前被存取過(guò)的文件
find   /home   -newer   tmp.txt             在/home下查更新時(shí)間比tmp.txt近的文件或目錄
find   /home   -anewer   tmp.txt            在/home下查存取時(shí)間比tmp.txt近的文件或目錄
find   /home   -used   -2                  列出文件或目錄被改動(dòng)過(guò)之后住涉,在2日內(nèi)被存取過(guò)的文件或目錄
find   /home   -user cnscn                列出/home目錄內(nèi)屬于用戶cnscn的文件或目錄
find   /home   -uid   +501                  列出/home目錄內(nèi)用戶的識(shí)別碼大于501的文件或目錄
find   /home   -group   cnscn              列出/home內(nèi)組為cnscn的文件或目錄
find   /home   -gid 501                   列出/home內(nèi)組id為501的文件或目錄
find   /home   -nouser                    列出/home內(nèi)不屬于本地用戶的文件或目錄
find   /home   -nogroup                   列出/home內(nèi)不屬于本地組的文件或目錄
find   /home    -name tmp.txt    -maxdepth   4   列出/home內(nèi)的tmp.txt 查時(shí)深度最多為3層
find   /home   -name tmp.txt   -mindepth   3   從第2層開始查
find   /home   -empty                     查找大小為0的文件或空目錄
find   /home   -size   +512k                查大于512k的文件
find   /home   -size   -512k               查小于512k的文件
find   /home   -links   +2                查硬連接數(shù)大于2的文件或目錄
find   /home   -perm   0700                查權(quán)限為700的文件或目錄
find   /tmp   -name tmp.txt   -exec cat {} \;  在/tmp目錄下搜索并查看tmp.txt文件
find   /tmp   -name   tmp.txt   -ok   rm {} \;  在/tmp目錄下搜索并刪除tmp.txt文件
find   /tmp  -type  f  -ctime  +30  -ok   rm {} \;  搜索/tmp下30天以前創(chuàng)建的文件并刪除
find   /tmp  -type  f  -ctime  +7  -exec cp {} /soft \;  搜索/tmp下7天以前創(chuàng)建的文件并拷貝到/soft目錄下
find    /   -amin    -10     查找在系統(tǒng)中最后10分鐘訪問(wèn)的文件
find    /   -atime   -2        查找在系統(tǒng)中最后48小時(shí)訪問(wèn)的文件
find    /   -empty             查找在系統(tǒng)中為空的文件或者文件夾
find    /   -group   cat        查找在系統(tǒng)中屬于 groupcat的文件
find    /   -mmin   -5         查找在系統(tǒng)中最后5分鐘里修改過(guò)的文件
find    /   -mtime   -1       查找在系統(tǒng)中最后24小時(shí)里修改過(guò)的文件
find    /   -nouser           查找在系統(tǒng)中屬于作廢用戶的文件
find    /   -user    fred     查找在系統(tǒng)中屬于FRED這個(gè)用戶的文件
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蒂萎,隨后出現(xiàn)的幾起案子秆吵,更是在濱河造成了極大的恐慌,老刑警劉巖五慈,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異主穗,居然都是意外死亡泻拦,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門忽媒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)争拐,“玉大人,你說(shuō)我怎么就攤上這事晦雨〖懿埽” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵闹瞧,是天一觀的道長(zhǎng)绑雄。 經(jīng)常有香客問(wèn)我,道長(zhǎng)奥邮,這世上最難降的妖魔是什么万牺? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮洽腺,結(jié)果婚禮上脚粟,老公的妹妹穿的比我還像新娘。我一直安慰自己蘸朋,他們只是感情好核无,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藕坯,像睡著了一般团南。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上堕担,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天已慢,我揣著相機(jī)與錄音,去河邊找鬼霹购。 笑死佑惠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播膜楷,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼旭咽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了赌厅?” 一聲冷哼從身側(cè)響起穷绵,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎特愿,沒想到半個(gè)月后仲墨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揍障,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年目养,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毒嫡。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡癌蚁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兜畸,到底是詐尸還是另有隱情努释,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布咬摇,位于F島的核電站伐蒂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏菲嘴。R本人自食惡果不足惜饿自,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望龄坪。 院中可真熱鬧昭雌,春花似錦、人聲如沸健田。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妓局。三九已至总放,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間好爬,已是汗流浹背局雄。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留存炮,地道東北人炬搭。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓蜈漓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宫盔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子融虽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,135評(píng)論 2 34
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,086評(píng)論 0 0
  • 本文承接之前寫的三十分鐘學(xué)會(huì)AWK一文,在學(xué)習(xí)完AWK之后灼芭,趁熱打鐵又學(xué)習(xí)了一下SED有额,不得不說(shuō)這兩個(gè)工具真的堪稱...
    mylxsw閱讀 4,382評(píng)論 3 74
  • grep grep的基本用法 grep命令是支持正則表達(dá)式的一個(gè)多用途文本搜索工具,一般格式為 grep 選項(xiàng) 模...
    王詩(shī)翔閱讀 2,924評(píng)論 2 34
  • 2018.5.29 day29: 有氧1小時(shí)彼绷,平均速度5巍佑,跑5min,出汗了寄悯。 過(guò)泡沫軸35min句狼,
    平常心4956閱讀 96評(píng)論 0 0