標籤:blank center target style
shell指令碼(二)
#find尋找檔案,以可根據時間、名稱、uid、gid、許可權、大小等條件尋找
#-amin -10:10分鐘之內訪問過的檔案或目錄;+10:10分鐘之前訪問過的檔案或目錄.時間單位為分鐘。
#尋找10分鐘之前30分鐘之內訪問過的檔案或目錄
find /home -amin +10 -a -amin -30
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/13/wKiom1VyuynxRIgqAAEuwlLInbU726.jpg" />
#-atime -2:48小時內訪問過的檔案或目錄;+2:48小時之前訪問過的檔案或目錄。
#時間單位為24小時,即2*24=48小時。
#尋找1天之前3天之內訪問過的檔案或目錄
find /var/log/ -atime +1 -a -atime -30 -exec ls -l {} \;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/0F/wKioL1VyvMnDDsF4AAE4iYY8UDg141.jpg" />
#-cmin -2:2分鐘之內修改過許可權屬性的檔案或目錄;+2:2分鐘之前修改過許可權屬性的檔案或目錄.時間單位為分鐘。
#尋找2分鐘之前60分鐘之內修改過許可權的檔案或目錄
find /home -cmin +2 -a -cmin -60
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/13/wKiom1VyuymStBg9AAGk-M5D2Ic235.jpg" />
#-ctime -2:48小時內修改過許可權屬性的檔案或目錄;+2:48小時之前修改過許可權屬性的檔案或目錄。時間單位為24小時,即2*24=48小時。
#尋找3天之前5天之內修改過許可權屬性的檔案或目錄
find /var/log/ -ctime +3 -a -ctime -5 -exec ls -l {} \;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/0F/wKioL1VyvMnhk9eMAAE0TVrI2aE652.jpg" />
#-mmin -2:2分鐘之內修改過內容的檔案或目錄;+2:2分鐘之前修改過內容的檔案#或目錄,時間單位為分鐘。
#尋找1分鐘之前30分鐘之內修改過檔案內容的檔案或目錄
find /home -mmin +1 -a -mmin -30
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/13/wKiom1VyuyryTBs3AAENN7RUJfk229.jpg" />
#-mtime -2:48小時內修改過內容的檔案或目錄;+2:48小時之前修改過內容的檔案或目錄。時間單位為24小時,即2*24=48小時。
#尋找1天之前30天之內修改過內容的檔案或目錄
find /home -mtime +1 -a -mtime -30
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/0F/wKioL1VyvMrQD6grAAIt9JLqmmE823.jpg" />
#-uid (+或-)數值(0):-10:表示小於10;+1:表示大小於;沒有+-5:表示等於5
#在目前的目錄下尋找uid=0的檔案或目錄
find . -uid 0
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/13/wKiom1VyuyuAj5gSAAGoxyj7EuY584.jpg" />
#-gid (+或-)數值(0):-10:表示小於10;+1:表示大小於;沒有+-5:表示等於5
#在目前的目錄下尋找gid=0的檔案或目錄
find . -gid 0
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0F/wKioL1VyvMvDAeJXAAGkykVAd0I667.jpg" />
#-name 尋找檔案或目錄名稱:可以使用*、+匹配符
#尋找/var/log/下所有以.log結尾檔案
find /var/log/*.log
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/13/wKiom1VyuyuzBQAwAACp9Ocl_j8584.jpg" />
#尋找目前的目錄下uid>0,gid<2223的檔案或者目錄
find . -uid +0 -gid -2223
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/0F/wKioL1VyvMugq33TAAIjp_BxZDo997.jpg" />
#-perm mode:
#-數值:mode轉換成二進位,四個值中二進位位有1的地方一定要匹配,如0700(111000000)
#0700-7777都與之匹配,可以理解為大於0700的都匹配
#尋找許可權大於744的檔案或目錄,因為mode第1個為7,全為1,所以所有屬主
#許可權不為7的都不會符合,同時群組許可權數值為4、5(4+1)、7(4+2+1),相與有1
#符合要求,其他許可權要求與群組許可權一樣要求,所以test目錄符合要求
find . -perm -744
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/13/wKiom1VyuyzR9k2CAAG7G6nlC2c976.jpg" />
#+數值:mode轉換成二進位,四個值中二進位位任何有1的地方
#有其中1個值相與等於1就可以了
#+001與只要最後一位許可權數值是1、5(=4+1)、7(=4+2+1)的許可權都匹配
#尋找包含有許可權值001的檔案或目錄
#user3、user4和user5許可權與001相與,都沒有1,所以不符合要求,而ddd
#其他許可權中相與有1,所以符合要求
#+mode可以理解為包含有此mode模式的都符合要求
find . -perm +001
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/0F/wKioL1VyvMyA9r1gAAIpRepvEpk676.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0F/wKioL1VyvMzChTNKAAISliXFUCs336.jpg" />
#mode:表示等於。
#尋找許可權值等於001的檔案或目錄
find . -perm 001
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/13/wKiom1Vyuy3hrWizAAGcs2praGQ690.jpg" />
#-size 檔案大小:-數值表示小於,+數值表示大於,沒有+-表示等於。
#尋找大於10k小於30k的檔案或目錄
find . -size +10 -size -30k
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0F/wKioL1VyvM3icAeuAALY3mOqUQU338.jpg" />
#尋找大小等於4k的檔案或目錄,k可以換成m或者g
find . -size 10k
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/13/wKiom1Vyuy7QUAp-AAHndM7iYYg329.jpg" />
#-empty:尋找大小為0位元組檔案,或目錄下沒和任何子目錄或檔案的空目錄
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/0F/wKioL1VyvM6QtOpNAAJRXhH2UkM444.jpg" />
#-exec shell命令:對尋找到的檔案或目錄執行shell命令
#尋找大於10k小於30k的檔案或目錄,並將它複製到/tmp
find . -size +10k -size -30k -exec cp -rf {} /tmp \;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/13/wKiom1Vyuy-CDmPAAACj5G8J3zw245.jpg" />
#whereis,-b:只尋找二進位檔案,-u:尋找不 包含指定類型的檔案,-B:只在指定目
#錄尋找二進位檔案,-M:只要指定目錄下尋找協助檔案
#-S:只在指定目錄尋找源碼檔案
#whereis只會在$PATH路徑下搜尋
whereis ls
#aaa檔案在/home下,並不在$PATH中,所以搜尋不到
whereis aaa
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/0F/wKioL1VyvM_jzoHkAAFZ0a107kg841.jpg" />
#which,尋找可執行檔,如果是別名命令時會列出具體另外資訊
which ls
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/13/wKiom1VyuzDygjkEAABkdV4CMEc729.jpg" />
#locate,在已建立的檔案及路徑的資料庫中搜尋,一般搜尋前先更改一下資料庫
#如果不使用updatedb更新,那麼在系統啟動完畢後建立立的檔案是無法搜尋到的
#迷你安裝是沒有locate命令的,yum -y install mlocate安裝
#它依賴/var/lib/mlocate/mlocate.db資料庫
locate one_day
#建立一個檔案abcd123456,再尋找,因為沒有updatedb,所以是找不到檔案的
touch abcd123456
locate abcd123456
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/13/wKiom1VyuzCwPSrnAADVX8lpFJw607.jpg" />
2、檔案排序、合并和分割
(1)sort命令
#-c:測試檔案是否已經排序;-k:指定排序域;-m:合并兩個已經排序的檔案;
#-n:根據數字大小進行排序;-o:將輸出寫到檔案;-r:將排序結果逆向顯示
#-t:改變域分隔字元;-u:去除結果中的重複行
#將a.txt逆向排序,並去除重複的行
sort -u -r a.txt
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/0F/wKioL1VyvM-jIhMAAACL5nWYlss935.jpg" />
#以":"為分隔字元,根據第3域數字大小來對/etc/passwd排序
sort -t: -k3n /etc/passwd
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/0F/wKioL1VyvNChGP1aAAMRrUH0Wns657.jpg" />
#合并已經排序的兩個檔案,需要合并的兩個檔案一定是已經排序了的
sort -u -m a.txt b.txt
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/13/wKiom1VyuzCx60aRAACcA49_NiI023.jpg" />
#根據第2域來排序
sort -k2 a.txt
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/0F/wKioL1VyvNCwMnRXAABr_8PtRws856.jpg" />
(2)uniq命令
#去除文本中重複的行,-c:列印第行在文本中重複出現次數;-d:只顯示有重複的記錄,
#每個重複記錄只出現一次;-u:只顯示沒有重複的記錄
#需要特別注意的是所說的"重複"是指連續出現的重複!如檔案test.txt內容:
1
1
2
1
uniq -c test.txt
#結果為,第1行數字1出現次數為2,第2行數字2出現次數為1,第4第數字1出現次數為1
2 1
1 2
1 1
#再如
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/13/wKiom1VyuzHDVEBVAACsq75LAwI876.jpg" />
#如果需要統計檔案中所有重複的行,則需要先對它進行排序
sort 10.txt | uniq -c 10.txt
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/13/wKiom1VyuzHRJBrgAABiNgzk164439.jpg" />
#注意與uniq -c 10.txt的區別
#只顯示重複的行,注意兩者區別
uniq -d 10.txt
sort 10.txt | uniq -d 10.txt
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/0F/wKioL1VyvNCTXcC6AACES8IjnVA478.jpg" />
#只顯示沒有重複的行,注意檔案排序前後去除重複行結果對比
#因為第1行開始數字1連續出現3次,所以uniq -u 10.txt 不會在第1行顯示1
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/13/wKiom1VyuzHwzGnJAAC3DWT4wbA178.jpg" />
(3)join命令
shell指令碼(二)