shell指令碼(二)

來源:互聯網
上載者:User

標籤: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指令碼(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.