一、顯示當前系統上root、fedora或user1用戶的默認shell;正則表達式
grep -E "^(root|user1|fedora)" /etc/passwd | cut -d: -f7
二、找出/etc/rc.d/init.d/functions文件中某單詞後面跟一組小括號的行,形如:hello();shell
[root@localhost ~]# grep -E -o "[[:alpha:]]+\(\)" /etc/rc.d/init.d/functions checkpid() run() pidof() daemon() killproc() pidfileofproc() pidofproc() status() success() failure() passed() warning() stage() success() failure() passed() warning() action() strstr() file() true() false() sysctl()
三、使用echo命令輸出一個絕對路徑,使用grep取出其基名;bash
擴展:取出其路徑名ide
[root@localhost ~]# echo "/home/1.txt" | grep -Eo "[^/]+/?$" 1.txt [root@localhost ~]# echo "/etc/rc.d/init.d/functions" | grep -Eo "^[/][a-z0-9]+.*/" /etc/rc.d/init.d/
四、找出ifconfig命令結果中的1-255之間數字; 1-9,10-19,100-199,200-249,250-255
[root@localhost ~]# ifconfig | egrep -o "\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][0-5][0-5]\>" 192 168 105 255 255 255 192 168 255 64 29 60 99 248 7 186 3 73 127 1 255 1 128 24 2 24 2 192 168 122 1 255 255 255 192 168 122 255
五、挑戰題:寫一個模式,能匹配合理的IP地址;工具
1.0.0.0-255.255.255.255oop
[root@localhost ~]# cat ip.txt | egrep "(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][0-5][0-5]\>)\.(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][0-5][0-5]\>\.)\.(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][0-5][0-5]\>)\.(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][0-5][0-5]\>)" 1.1.1.1 2.2.2.2 3.3.3.3
六、挑戰題:寫一個模式,能匹配出全部的郵件地址;ui
[root@localhost ~]# cat email.txt | grep -E "^[a-z0-9_-]+@[a-z0-9_-]+.[[:alpha:]]+$" 1@1.com 22222@qq.com 121dsfaf-adsfa@163.com 1@1.com 22222@qq.com 121dsfaf-adsfa@163.com 1@1.com 22222@qq.com 121dsfaf-adsfa@163.com 1@1.com 22222@qq.com 121dsfaf-adsfa@163.com 1@1.com
七、查找/var目錄下屬主爲root,且屬組爲mail的全部文件或目錄;spa
find命令:實時查找工具,經過遍歷自定路徑下的文件系統完成文件查找對象
工做特色:ip
查找速度略慢
精確查找
實時查找
格式:
find [OPTIONS]... [查找路徑] [查找條件] [處理動做]
查找路徑:指定具體目標路徑,能夠爲多個路徑,默認爲當前路徑
查找條件:指定的查找標準,能夠爲文件名、大小、類型、權限等標準進行,默認爲找出指定路徑下的全部文件
處理動做:對符合條件的文件作什麼操做,默認輸出至屏幕
查找條件:根據文件名查找
-name "filename":支持使用glob,嚴格區分文件名稱大小寫
-iname "filename":不區分字母大小寫
-regex "PATTERN":支持使用正則表達式,以PATTERN匹配整個文件路徑字符串,而不單單是文件名稱
根據屬主、屬組查找文件
-user USRNAME:查找屬主USERANME的文件
-group GRPNAME:查找屬組爲GRPNAME的文件
-uid UserID:查找屬主爲指定UID號的文件
-gid groupid:查找屬組爲指定gid號的文件
-nouser username :查找屬主不是usernmae的文件
-nogroup groupname:查找屬組不是groupname的文件
[root@localhost tmp]# chown root:mail fstab [root@localhost tmp]# ll ./fstab -rw-r--r--. 1 root mail [root@localhost tmp]# find /tmp/ -user root -group mail -ls 203539008 4 -rw-r--r-- 1 root mail 465 Sep 4 08:36 /tmp/fstab 465 Sep 4 08:36 ./fstab
八、查找當前系統上沒有屬主或屬組的文件;
進一步:查找當前系統上沒有屬主或屬組,且最近3天內曾被訪問過的文件或目錄;
根據時間戳:
以「天」爲單位
-atime [+|-]#:最近一次訪問時間
#:[#,#+1)
+#:[#+1,oo]
-#:[0,#]
-mtime [+|-]#:最近一次內容修改時間
#:[#,#+1)
+#:[#+1,oo]
-#:[0,#]
-ctime [+|-]#:最近一次屬性修改時間
#:[#,#+1)
+#:[#+1,oo]
-#:[0,#]
以「分鐘」爲單位
-amin
-mmin
-cmin
[root@localhost /]# find /tmp \(-nouser -o -nogroup\) -ls //不加括號會把-o後面所有當作條件 [root@localhost /]# find /tmp atime 3 \(-nouser -o -nogroup\) -ls //+3三天前作過修改的,-3三天以內作過修改
九、查找/etc目錄下全部用戶都有寫權限的文件;
[root@localhost /]#find /etc -perm -222 -ls
十、查找/etc目錄下大於1M,且類型爲普通文件的全部文件;
根據文件大小來查找:
-size [+|-]#UNIT
經常使用單位:k,M,G
#UNIT:(#-1,#]
-#UNIT:[0,#-1]
+#UNIT:(#,oo)
[root@localhost /]#find /etc -type f -size +1M -ls
十一、查找/etc/init.d/目錄下,全部用戶都有執行權限,且其它用戶有寫權限的文件;
根據權限查找
-perm [+|-]MODE
MODE:精確權限匹配
+MODE:任何一類(u,g,o)對象的權限中只要能覺得匹配便可
-MODE:每一類對象都必須同時擁有爲其指定的權限標準
[root@localhost /]# find /etc/init.d/ -perm -113 -ls 68320523 8 -rwx-wxrwx 1 root root 6630 Sep 16 2015 /etc/init.d/network
十二、查找/usr目錄下不屬於root、bin或hadoop的文件;
[root@localhost /]#find /usr ! \( -user root -o -user bin -o -user hadoop \) -ls
1三、查找/etc/目錄下至少有一類用戶沒有寫權限的文件;
[root@localhost /]# find /tmp/ \( ! -perm +200 -o ! -perm +020 -o ! -perm +002 \) -ls
1四、查找/etc目錄下最近一週內其內容被修改過,且不屬於root或hadoop的文件;
[root@localhost /]#find /etc \( -mtime -7 ! -user root -a ! -user hadoop \) -ls