文件搜索命令
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.處理動作:
默認動作,輸出到標準輸出 | |
---|---|
-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
//查找當前目錄下除過塊設備文件的所有文件。