shell腳本(二)
#find查找文件,以可根據時間、名稱、uid、gid、權限、大小等條件查找
#-amin -10:10分鐘之內訪問過的文件或目錄;+10:10分鐘之前訪問過的文件或目錄.時間單位爲分鐘。
#查找10分鐘之前30分鐘之內訪問過的文件或目錄
find /home -amin +10 -a -amin -30
#-atime -2:48小時內訪問過的文件或目錄;+2:48小時之前訪問過的文件或目錄。
#時間單位爲24小時,即2*24=48小時。
#查找1天之前3天之內訪問過的文件或目錄
find /var/log/ -atime +1 -a -atime -30 -exec ls -l {} \;
#-cmin -2:2分鐘之內修改過權限屬性的文件或目錄;+2:2分鐘之前修改過權限屬性的文件或目錄.時間單位爲分鐘。
#查找2分鐘之前60分鐘之內修改過權限的文件或目錄
find /home -cmin +2 -a -cmin -60
#-ctime -2:48小時內修改過權限屬性的文件或目錄;+2:48小時之前修改過權限屬性的文件或目錄。時間單位爲24小時,即2*24=48小時。
#查找3天之前5天之內修改過權限屬性的文件或目錄
find /var/log/ -ctime +3 -a -ctime -5 -exec ls -l {} \;
#-mmin -2:2分鐘之內修改過內容的文件或目錄;+2:2分鐘之前修改過內容的文件#或目錄,時間單位爲分鐘。
#查找1分鐘之前30分鐘之內修改過文件內容的文件或目錄
find /home -mmin +1 -a -mmin -30
#-mtime -2:48小時內修改過內容的文件或目錄;+2:48小時之前修改過內容的文件或目錄。時間單位爲24小時,即2*24=48小時。
#查找1天之前30天之內修改過內容的文件或目錄
find /home -mtime +1 -a -mtime -30
#-uid (+或-)數值(0):-10:表示小於10;+1:表示大小於;沒有+-5:表示等於5
#在當前目錄下查找uid=0的文件或目錄
find . -uid 0
#-gid (+或-)數值(0):-10:表示小於10;+1:表示大小於;沒有+-5:表示等於5
#在當前目錄下查找gid=0的文件或目錄
find . -gid 0
#-name 查找文件或目錄名稱:可以使用*、+匹配符
#查找/var/log/下所有以.log結尾文件
find /var/log/*.log
#查找當前目錄下uid>0,gid<2223的文件或者目錄
find . -uid +0 -gid -2223
#-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
#+數值: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
#mode:表示等於。
#查找權限值等於001的文件或目錄
find . -perm 001
#-size 文件大小:-數值表示小於,+數值表示大於,沒有+-表示等於。
#查找大於10k小於30k的文件或目錄
find . -size +10 -size -30k
#查找大小等於4k的文件或目錄,k可以換成m或者g
find . -size 10k
#-empty:查找大小爲0字節文件,或目錄下沒和任何子目錄或文件的空目錄
#-exec shell命令:對查找到的文件或目錄執行shell命令
#查找大於10k小於30k的文件或目錄,並將它複製到/tmp
find . -size +10k -size -30k -exec cp -rf {} /tmp \;
#whereis,-b:只查找二進制文件,-u:查找不 包含指定類型的文件,-B:只在指定目
#錄查找二進制文件,-M:只要指定目錄下查找幫助文件
#-S:只在指定目錄查找源碼文件
#whereis只會在$PATH路徑下搜索
whereis ls
#aaa文件在/home下,並不在$PATH中,所以搜索不到
whereis aaa
#which,查找可執行文件,如果是別名命令時會列出具體另外信息
which ls
#locate,在已建立的檔案及路徑的數據庫中搜索,一般搜索前先更改一下數據庫
#如果不使用updatedb更新,那麼在系統啓動完畢後新建立的文件是無法搜索到的
#最小化安裝是沒有locate命令的,yum -y install mlocate安裝
#它依賴/var/lib/mlocate/mlocate.db數據庫
locate one_day
#新建一個文件abcd123456,再查找,因爲沒有updatedb,所以是找不到文件的
touch abcd123456
locate abcd123456