Linux 搜索命令 which whereis 與find 。

which:搜索命令所在路徑,別名

[root@xiaoagiao ~]# which ls
alias ls='ls --color=auto'
        /usr/bin/ls
[root@xiaoagiao ~]# which pwd
/usr/bin/pwd
[root@xiaoagiao ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
        /usr/bin/alias
        /usr/bin/which

whereis:搜索程序名

  • -b:查找可執行文件
  • -m:查找幫助文檔所在位置
[root@xiaoagiao ~]# whereis zip
zip: /usr/bin/zip /usr/share/man/man1/zip.1.gz
[root@xiaoagiao ~]# whereis -b zip
zip: /usr/bin/zip
[root@xiaoagiao ~]# whereis -m zip
zip: /usr/share/man/man1/zip.1.gz

find:搜索文件

  • 語法格式:

find [options] [查找的起始路徑] [查找條件] [處理動作]

  • 查找的起始路徑:
    指定具體的搜索目錄,默認爲當前目錄。

  • 查找條件:
    指定查找的標準如,大小,文件名,類型等。默認是指定路徑下的所有文件。

  • 處理動作:
    符合查找條件的文件做出的操作,例如cp,rm,默認爲輸出到標準輸出。

查找方式

1.根據名稱查找。

  • -name " "–>根據文件名稱查找。
  • -iname " "–>根據文件名稱查找忽略文件名稱大小寫。
  • -regex " "–>匹配路徑而不是文件名。
    可以使用通配符:如 find -name “fil.*”

2. 根據文件從屬關係查找。

-user 屬主
-group 屬組
-uid 屬主ID 按照用戶 ID 査找所有者是指定 ID 的文件
-gid 屬組ID 按照用戶組 ID 査找所屬組是指定 ID 的文件
-nouser 沒有屬主的文件
-nogroup 沒有屬組的文件

例如 :

[root@localhost ~]#find.-user root
//在當前目錄中査找所有者是 root 的文件

3.根據文件類型查找.

  • -type +文件類型
[root@localhost ~]#find . -type f
//查找當前目錄下的所有普通文件。

文件類型 :
f:普通文件
d:目錄
b:塊設備文件
l:鏈接文件
c:字符設備文件
p:管道文件
s:socket套接字文件

4.根據文件的大小查找。

-size [+|-]數字

[root@localhost ~]#find . -size 10
//查找當前目錄下大小爲10kb的文件。
[root@localhost ~]#find . -size -10
//查找當前目錄下大小小於10kb的文件。
[root@localhost ~]#find . -size +10
//查找當前目錄下大小大於10kb的文件。

5.根據時間戳查找。

-atime [+|-]數字 : 文件最後訪問時間。
-mtime [+|-]數字 : 文件最後修改時間。
-ctime [+|-]數字: 文件最後改變時間。

  • 以天爲單位
    例如 :
[root@localhost ~]#find . -atime 10
//查找當前目錄下文件最後訪問時間是10天前的那一天的文件。
//比如今天11號,找最後訪問時間是1號的文件。
[root@localhost ~]#find . -atime -10
//查找當前目錄下文件最後訪問時間是前10天的文件。
//比如今天11號,找最後訪問時間是1號到現在的文件。
[root@localhost ~]#find . -atime +10
//查找當前目錄下最後訪問時間是10天之前的的文件。
//比如今天11號,找最後訪問時間是1號之前的文件。
  • 以分鐘爲單位
    -amin [+|-]分鐘數
    -mmin [+|-]分鐘數
    -cmin [+|-]分鐘數
    ----->用法與按天數查找相同。

6.根據文件權限來查找.

-perm mode

-perm + mode 精確查找
-perm+ /mode 三方權限中有一方滿足即可
-perm+ -mode 三方權限必須都對應滿足
[root@localhost ~]#find . -perm 777
//查找當前目錄下權限爲777的文件。
[root@localhost ~]#find . -perm /777
//查找當前目錄下三方權限有一方爲777的文件。
[root@localhost ~]#find . -perm -421
//查找當前目錄下權限要滿足421的文件。權限大於421也可。

7.根據目錄層級查找。

-path–> 基於目錄層級

基於目錄深度查找:

-maxdepth 最大深度
-mindepth 最小深度

[root@localhost ~]#find . -maxdepth 3
//查找當前目錄下前三級的所有文件。
[root@localhost ~]#find . -maxdepth 3 -mindepth 3
//查找當前目錄下第三級的所有文件。

8.處理動作:

-print 默認動作,輸出到標準輸出
-fls 將查找到的文件的長格式信息寫入到指定文件中
-ok commond {} \ ; 對執行的每個文件做commond操作,每次的操作需要用戶確認
-exec commond {} \ ; 對執行的每個文件做commond操作

說明 :{ }中得內容就是前邊find命令查找出來的內容,根據需求調整處理動作所需要的命令,然後順序。

[root@localhost ~]#find . -perm 777 -fls /etc/abc/
//查找當前目錄下權限爲777的文件,並放入/etc/abc/中。
[root@localhost ~]#find . -type p -ok -exec rm -f {}\;
//查找當前目錄下所有管道文件。
//將查找到的文件全部刪除,刪除前詢問是否執行。

9.邏輯運算符。

選項:

  • -a:and邏輯與,兩個條件都成立,find 搜索的結果才成立
  • -o:or邏輯或,兩個條件只要其中一個成立,find 命令就可以找到結果
  • -not:not邏輯非,也就是取反的意思。
[root@localhost ~]#find . -type b -a -perm 777 
//查找當前目錄下,所有塊設備文件同時權限爲777的文件。
[root@localhost ~]#find . -type b -0 -type f
//查找當前目錄下塊設備文件或者普通文件。
[root@localhost ~]#find .-not  -type b
//查找當前目錄下除過塊設備文件的所有文件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章