天天看點

檔案/目錄操作(6)——which、whereis、locate、find指令

1,Linux指令的分類?

(1)系統指令: /bin 和 /sbin下的(管理者指令)

     應用程式指令:/usr/bin 和 /usr/sbin下的      

(2) 内部指令:打開了新的shell時會自動加載的

      外部指令:通過安裝軟體包有的

2,關于$PATH這個變量?

$PATH 是指令搜尋路徑
[[email protected]_hosts test]# echo $PATH 
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
           

which指令

(1)在PATH變量指定的路徑中,查詢指令存放的路徑;

(2)傳回第一個搜尋結果且不再繼續尋找;

(3)alias别名優先于PATH查找;(使用的時候也是優先别名的)

(4)找的對象必須具有可執行權限,且隻能查找外部指令

[[email protected]_hosts ~]# which cp
alias cp='cp -i' 
/bin/cp
           
[[email protected]_hosts ~]# which alias //which alias 發現找不到,說明alias是内部指令
/usr/bin/which: no alias in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
           

whereis指令

(1)在PATH變量指定的路徑中,查詢指令存放的路徑、幫助檔案路徑;

(2)傳回所有搜尋到的結果;

[[email protected] ~]# whereis cp
cp: /bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz
           

locate指令

(1)locate  string 可以檢視包含string字樣的所有的檔案路徑;

(2)locate指令使用時,會周遊locate專用的一個資料庫檔案 /var/lib/(整個linux目錄樹結構形成的),從中查找;

(3)updatedb指令可更新這個資料庫 //建立與删除後都要更新才能locate出效果。

find指令

一、按各種方式查找

(1)-name:按檔案名稱查找

(2)-size:按檔案大小查找(機關K、M、G)

    “+n”表示大于這個值

    “-n”表示小于這個值

    “n” 表示等于這個值

(3)-type:按對象類型查找(目錄d,普通檔案f,連結檔案l,字元裝置檔案c,塊裝置檔案b,管道檔案p)

(4)-mtime:按對象内容修改時間查找(天數)

    -atime:按對象被通路的時間查找(天數)

    -ctime:按對象狀态被修改的時間去查找(天數)

    -mmin/-amin/-cmin:(分鐘數)

     “+ n” n天/分鐘前的

      “- n” n天/分鐘内的

(5)-user:按檔案屬主查找

(6)-perm:按檔案權限查找

二、常配合exec和xargs使用

(1)-exec 表示執行後面的指令;“{}”表示存放find指令查找的結果 ;“\;”表示結束标志。

(2)xargs 表示将前面指令的輸出做為參數送給後面的指令使用。

[[email protected] ~]# find /boot -name "vmlinuz*" | xargs ls -l
-rwxr-xr-x. 1 root root 4044560 Jan 30 2013 /boot/vmlinuz-2.6.32-358.el6.x86_64
[[email protected] ~]# find /boot -name "vmlinuz*" -exec ls -l {} \; 
-rwxr-xr-x. 1 root root 4044560 Jan 30 2013 /boot/vmlinuz-2.6.32-358.el6.x86_64
           

三、邏輯運算及一些特殊選項

(1)-a           且

(2)-o           或

(3)!/ -not  非

(4)-ok         提醒你是否要執行後面的删除指令

[[email protected] lianxi]# find  / -name  zhongguohehuoren -ok rm -rf {} \; 
< rm ... /bin/zhongguohehuoren > ? y
< rm ... /lianxi/zhongguohehuoren > ? y
< rm ... /zhongguohehuoren > ? y</span>
           

(5)-maxdepth 後面跟數字num,表示在目前目錄下往下num層深度查找(預設為1層)

四,應用執行個體

find /boot -size +1024k -o -name "vmlinuz*" |xargs  ls -l

find /boot -size +1M -a -name "vmlinuz*" -a -type f|xargs ls -l

find /boot -type d  -name "grub*"|xargs ls -dlh

find /boot -size +1M !  -size +4M -exec ls -lh {} \;
find /boot -size +1M  -size -4M -exec ls -lh {} \;   //文法沒有問題,但結果并未完全顯示

find  /etc/   -maxdepth 1 -name  "p*" | grep passwd </span>
           

繼續閱讀