1、which命令
which - shows the full path of (shell) commands.(顯示(shell)命令的完整路徑)
在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
which [選項] [–] 程序名 […]
沒有常用選項哦!
查找ls命令的位置
[root@localhost ~]# which ls
alias ls='ls --color=auto' //命令別名
/usr/bin/ls //ls命令的絕對路徑
2、whereis命令
whereis - locate the binary, source, and manual page files for a command(查找命令的二進制、源代碼和手冊文件)
whereis [選項] [-BMS 目錄… -f] 命令名…
選 項 | 作 用 |
---|---|
-b | 只查找二進制文件 |
-B | 只在設置的目錄下查找二進制文件 |
-m | 只查找幫助手冊文件 |
-M | 只在設置的目錄下查找幫助手冊文件 |
-s | 只查找原始代碼文件 |
-S | 只在設置的目錄下查找原始代碼文件 |
-f | 不顯示文件名前的路徑名稱 |
① 查找ls命令的二進制文件和幫助手冊文件
[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
//輸出信息從左到右:命令名、bash路徑、bash的man手冊頁路徑
② 只查找ls命令的二進制文件
[root@localhost ~]# whereis -b ls
ls: /usr/bin/ls
3、locate命令
locate - find files by name(按名稱查找文件)
查找速度快,模糊查找,依賴於事先構建好的索引庫,但查找並不是實時的,以系統週期更新數據庫爲準,同時也可以手動更新數據庫(updatedb)。
tips:locate需要安裝的哦!使用命令:yum install mlocate。
locate [選項]… 模式…
選 項 | 作 用 |
---|---|
-b | 只匹配路徑中的基名 |
-c | 統計出共有多少個符合條件的文件 |
① 更新數據庫
[root@localhost ~]# updatedb
② 查找/etc/sysconfig/目錄下所有以net開頭的文件
[root@localhost ~]# locate /etc/sysconfig/net
/etc/sysconfig/netconsole
/etc/sysconfig/network
/etc/sysconfig/network-scripts
/etc/sysconfig/network-scripts/.ifcfg-ens33.swp
/etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts/ifcfg-lo
...
4、find命令
find - search for files in a directory hierarchy(在目錄層次結構中搜索文件)
查找速度慢,實時精確查找,通過遍歷指定路徑下的文件系統層級結構完成查找。
find [起始查找路徑] [選項(查找條件)] [ 處理動作 ]
起始查找路徑:指定具體的搜索起始路徑,默認爲當前目錄;
查找條件:指定查找的標準,大小、文件名、類型等,默認是指定路徑下的所有文件;
處理動作:對符合查找條件的文件做出的操作,例如:cp、rm等,默認爲輸出到標準輸出;
① 根據文件名查找(精確查找)
選 項 | 作 用 |
---|---|
-name | 根據文件名搜索 |
-iname | 根據文件名搜索,不區分大小寫 |
-inode | 根據iNode節點號搜索 |
②根據文件從屬關係查找
選 項 | 作 用 |
---|---|
-uid UID | 査找所有者是指定 ID 的文件 |
-gid GID | 査找屬組是指定 ID 的文件 |
-user 用戶名 | 查找所有者是指定用戶的文件 |
-group 組名 | 查找屬組是指定用戶組的文件 |
-nouser | 查找沒有所有者的文件 |
-nogroup | 查找沒有屬組的文件 |
③ 根據文件類型查找
-type TYPE
TYPE | 作 用 |
---|---|
f | 普通文件 |
d | 目錄文件 |
l | 符號鏈接文件 |
b | 塊設備文件 |
c | 字符設備文件 |
p | 管道文件 |
s | 套接字文件 |
④ 根據文件大小查找
-size [ + | - ] n 常用單位:k、M、G;
[ + |/ - ] n 的含義 | 作 用 |
---|---|
n | ( n–1 , n ] |
-n | [ 0 , n–1 ] |
+n | ( n , ∞ ) |
⑤ 根據修改時間查找
Ⅰ、以"天"爲單位
選 項 | 作 用 |
---|---|
-atime [ + | - ] 天數 | 根據文件訪問時間搜索 |
-mtime [ + | - ] 天數 | 根據文件修改時間搜索 |
-ctime [ + | - ] 天數 | 根據文件改變時間搜索 |
Ⅱ、以"分鐘"爲單位
選 項 | 作 用 |
---|---|
-amin [ + | - ] 分鐘數 | 根據文件訪問時間搜索 |
-mmin [ + | - ] 分鐘數 | 根據文件修改時間搜索 |
-cmin [ + | - ] 分鐘數 | 根據文件改變時間搜索 |
tips:改變時間,表示我們最後一次對文件屬性改變的時間,包括權限,大小,屬性等等。
※ [ + | - ] 時間 的含義比較難理解,下面重點解釋一下:
[ + | - ] 時間 的含義 | 作 用 |
---|---|
-n | n天內修改的文件 |
n | n ~ n+1那天修改的文件 |
+n | n天之前修改的文件 |
⑥ 根據權限查找
-perm [ / | - ] mode
[ / | - ] mode 的含義 | 作 用 |
---|---|
mode | 精確匹配,査找文件權限剛好等於"權限模式"的文件 |
-mode | 査找文件權限全部包含"權限模式"的文件,即任何高於此權限的文件 |
/mode | 査找文件權限包含"權限模式"的任意一個權限的文件,即只要包含任意一個指定權限 |
⑦ 根據目錄層級查找
選 項 | 作 用 |
---|---|
-depth | 從指定目錄下最深層的子目錄開始查找 |
-maxdepth levels | 設置查找範圍的最大目錄層級 |
-mindepth levels | 設置查找範圍的最小目錄層級 |
⑧ 邏輯運算符
選 項 | 作 用 |
---|---|
-a | 邏輯與(and) |
-o | 邏輯或(or) |
-not 或 ! | 邏輯非(not) |
動 作 | 作 用 |
---|---|
輸出至標準輸出,默認動作 | |
-ls | 輸出文件的詳細信息,相當於對查找到的文件執行"ls -l"命令 |
-delete | 刪除查到的文件 |
-fls /PATH/TO/SOMEFILE | 把查找到的所有文件的長格式信息保存至指定文件中 |
-ok COMMAND {} \; | 對查找到的每個文件執行由COMMAND表示的命令,每次操作都由用戶進行確認 |
-exec COMMAND {} \; | 對查找到的每個文件執行由COMMAND表示的命令,無需確認 |
tips:find傳遞查找到的文件路徑至後面的命令時,是先查找出所有符合的文件路徑,並一次性傳遞給後面的命令。但是有些命令不能接受過長的參數,此時命令執行會失敗,可以使用這種方法規避此問題:find | xargs COMMAND
① 查找/var目錄下屬主不爲root,且文件大小大於1K的文件;
[root@localhost /]# find /var ! -user root -a -size +1k -ls
② 查找系統中,沒有屬主或沒有屬組的文件,且最近5分鐘被訪問過;
[root@localhost /]# find / \( -nouser -o -nogroup \) -a -amin -5
③ 查找系統中所有用戶均沒有讀寫權限的文件,並且拷貝至/tmp目錄;
[root@localhost ~]# find / ! -perm /666 -exec cp /tmp {} \;
④ 查找/etc目錄下大於1M,且爲普通文件或管道文件的所有文件,並且列出文件的所有詳細信息及iNode節點號;
[root@localhost ~]# find /etc/ -size +1M -a \( -type f -o -type p \) | xargs ls -li {} /;