用的最多的是刪除之前的日誌,好比三個月前的,還有就是查找文件名正則表達式
按文件和目錄:find /root/ -type f(文件) -type d(目錄)bash
針對文件名字搜索:find /root/ -name "*.txt" 搜下面有txt的文件ssh
按建立時間:find /root/ -mtime +1(一天之前) -1(一天之內)+5(五天之前) -5(五天之內)spa
find /etc/ -type d -name "*.txt" 目錄命令行
find /etc/ -type f -name "*.txt*" 文件日誌
find /root/ -type f -mmin -60 60分鐘內的文件crontab
find /root/ -type f -mmin -200 200分鐘內的文件it
find /root/ -type f -size -10k -exec ls -lh {} \; 列出root目錄小於10k的文件test
find /root/ -type f -mmin -200 -exec mv {} {}.bak \; 200分鐘之內的文件後綴加.bakawk
grep '[0-9]' /etc/inittab 過濾出全部包含數字的行
grep -A2(xxx及下面兩行) -B2(xxx及上面兩行) -C2(上下各兩行) 'xxx' /root/
grep -c 顯示行數
grep -n 顯示行號(用的多打個call)
grep -v 取反 grep -v '[0-9]' /etc/inittab 過濾出全部不包含數字的行
grep -E 擴展選項可加入管道符 grep -E -n 'abc|123' 123.txt
細節注意:
grep '^[a-zA-Z]' test.txt 括號之外表示以a-zA-Z爲首字母的行
grep '[^a-zA-Z]' test.txt 括號內表示出了a-zA-Z以外的行
幾個實例:
grep -v '^#' /etc/crontab |grep -v '^$' 去除全部空行和以 ‘#’ 開頭的行
grep -v '^#' /etc/inittab 把全部以 ‘#’ 開頭的行去除
在正則表達式中, 「^」 表示行的開始, 「$」 表示行的結尾,那麼空行則能夠用 「^$」 表示
. 表示任意一個字符(grep)
*表示零個或多個前面的字符(grep)
+篩選一個或一個以上前面的字符(egrep)
?篩選零個或一個前面的字符(egrep)
-n :只打印模式匹配的行
-e :直接在命令行模式上進行sed動做編輯,此爲默認選項
-f :將sed的動做寫在一個文件內,用–f filename 執行filename內的sed動做
-r :支持擴展表達式
-i :直接修改文件內容
sed -n '5'p 123.txt 打印第五行
sed -n '1,5'p 123.txt 打印1到5行
sed -n '1,$'p 123.txt 打印1到尾行
sed -n '/^1/'p 123.txt 打印首字母爲1的行
sed -n '/sd$/'p 123.txt 打印sd結尾的行
sed -e '1'p -e '/root/'p -n 123.txt 多個選項同時匹配,結尾註意加-n不然重複內容
sed -n -r '/o+t/'p 123.txt 打印-r支持擴展表達式的+
sed -nr '/o{2}/'p 123.txt 打印兩個o或以上的行
下面進入刪除區域:
sed ‘1’d test.txt 刪除文件第一行 d是刪除(實際上只是不顯示)
sed ‘1,3’d test.txt 刪除1到3行(實際上只是不顯示)
sed ‘/oot/’d test.txt 刪除包含oot的行(實際上只是不顯示)
sed ‘1,2s/ot/to/g’ test.txt 將1-2行的ot更換成to(s是替換 g是全局替換)
sed ‘s/[0-9]//g’ test.txt 刪除所有的數字(實際上只是不顯示)
sed ‘s/[a-zA-Z]//g’ test.txt 刪除所有的英文字母
sed -r 's/(rot)(.*)(bash)/\3\2\1/' test.txt 把三段順序顛倒打印出來
sed ‘s/^.*$/123&/’ test.txt 這個是給全部行前面加上123
awk -F ':' '{print $1}' 打印第一段
awk -F指定分隔符 $0打印全部 $1第一段 $2,$3,$7打印237段
awk -F ':' '$1~/oo/' 888.txt 匹配第一段有oo的行
awk -F ':' '$7!="/sbin/nologin"' /etc/passwd
!= 爲不匹配,除了針對某一個段的字符進行邏輯比較外,還能夠兩個段之間進行邏輯比較
awk -F ':' '$3<$4' /etc/passwd 第三段數字小於第四段的打印出來
head -n3 /etc/passwd | awk -F ':' '{print NF}' NF是分割成多少段
head -n3 /etc/passwd | awk -F ':' '{print $NF}' $NF是最後一段的值
head -n3 /etc/passwd | awk -F ':' '{print NR}' NR是行數
awk -F ':' 'NR>20 && $1 ~ /ssh/' /etc/passwd 行數大於20而且第一段有ssh的段打印出來
head -n2 /etc/passwd |awk -F ':' '{$7=$3+$4; print $0}' 第七段等於第三四段相加,打印全局