Linux文件搜索命令

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)
  • 處理動作

動 作 作 用
-print 輸出至標準輸出,默認動作
-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 {} /;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章