RHEL7文件查找

来源:http://www.cnblogs.com/sakuraph/archive/2016/08/28/5814172.html
-Advertisement-
Play Games

本文介紹RHEL7下which、whereis、locate、find命令的使用,重點介紹find命令的使用 which 命令:which 作用:查找命令的執行文件路徑 語法:which [選項] [ ] 名稱... 說明:which命令比較簡單,他的選項都是不常用的 whereis 命令:wher ...


本文介紹RHEL7下which、whereis、locate、find命令的使用,重點介紹find命令的使用

which

命令:which
作用:查找命令的執行文件路徑
語法:which [選項] [--] 名稱...
說明:which命令比較簡單,他的選項都是不常用的

[root@localhost ~]# which -- nginx
/usr/bin/which: no nginx in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/
sbin:/usr/bin:/usr/local/java/jdk1.7.0_79/bin:/usr/local/mysql/bin:/root/bin)
[root@localhost ~]# which nginx cat passwd
/usr/bin/which: no nginx in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/
sbin:/usr/bin:/usr/local/java/jdk1.7.0_79/bin:/usr/local/mysql/bin:/root/bin)
/bin/cat
/usr/bin/passwd

whereis

命令:whereis
作用:定位可執行文件、源代碼文件、幫助文件在文件系統中的位置
語法:whereis [-bmsu] [BMS 目錄名 -f ] 文件名

選項 說明
-b 定位可執行文件
-m 定位幫助文件
-s 定位源代碼文件
-u 搜索預設路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件
-B 指定搜索可執行文件的路徑
-M 指定搜索幫助文件的路徑
-S 指定搜索源代碼文件的路徑
-f -M-S或-B選項查找的終止信號
[root@localhost ~]# whereis tomcat
tomcat: /usr/local/tomcat

locate

locate讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案
其方法是先建立一個包括系統內所有檔案名稱及路徑的資料庫
之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了

命令:locate
作用:通過索引資料庫查找文件
語法:locate [選項]... [PATTERN]...

選項 說明
-b 只匹配路徑名的基本名稱
-c 只列印查詢結果總數
-e 只查詢已經存在的文件
-L 搜尋符號鏈接文件時追蹤到鏈接的目標文件
-i 忽略大小寫查找
-l 限制查詢輸出的結果數,需要跟上數量
-P 不追蹤鏈接文件,與-L相反
-0 不分隔顯示輸出的結果
-S 列印資料庫中統計的信息,此選項不能和其他選項一起使用
-q 報告沒有讀取資料庫的錯誤消息
-r 使用正則表達式模式進行匹配
-w 匹配整個路徑搜尋(預設使用該選項)
[root@localhost ~]# locate /etc/passwd
/etc/passwd
/etc/passwd-

如果使用locate查詢不到,則使用命令updatedb更新下mlocate資料庫即可

[root@localhost ~]# touch abcd123456dcba.txt
[root@localhost ~]# locate abcd123456dcba.txt
[root@localhost ~]# updatedb
[root@localhost ~]# locate abcd123456dcba.txt
/root/abcd123456dcba.txt

find

find命令是在目錄結構中搜索文件,並執行指定的操作
find命令提供了相當多的查找條件,功能很強大

命令:find
作用:
語法:find [選項] [路徑...] [表達式]
說明:

  • 預設的路徑是當前目錄
  • 預設的表達式為-print
  • 表達式包括: operators, options, tests, actions

operators即邏輯運算符,預設為and,優先順序順序為:
(表達式)、!表達式、-not 表達式、表達式1 -a 表達式2、
表達式1 -and 表達式2、表達式1 -o 表達式2、表達式1 -or 表達式2、
表達式1,表達式2
即優先順序:
括弧>!>-not>-a>-and>-o>-or
多個表達式用逗號隔開前一個優先順序高於後一個

actions即動作,預設為-print,以下是常見的動作:
-delete -print0 -printf FORMAT -fprintf FILE FORMAT -print
-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
-exec COMMAND
-exec COMMAND {} + -ok COMMAND
-execdir COMMAND
-execdir COMMAND {} + -okdir COMMAND

find命令的表達式非常多下麵只介紹常用的幾種:

表達式 說明
-print 將匹配的文件輸出到標準輸出
-name 按照文件名查找文件
-perm 按照文件許可權來查找文件
-prune 使用這一選項可以使find命令不在當前指定的目錄中查找,即排除
如果同時使用-depth選項,那麼-prune將被find命令忽略
-depth 在查找文件時,首先查找當前目錄中的文件
然後再在其子目錄中查找
-user 按照文件屬主來查找文件
-nouser 查找無有效屬主的文件
即該文件的屬主在/etc/passwd中不存在
-group 按照文件所屬的組來查找文件
-nogroup 查找無有效所屬組的文件
即該文件所屬的組在/etc/groups中不存在
-mtime -n/+n 按照文件的更改時間來查找文件
-n表示文件更改時間距現在n天以內
+n表示文件更改時間距現在n天以前
-type 查找某一類型的文件
b 塊設備文件
d 目錄
c 字元設備文件
p 管道文件
l 符號鏈接文件
f 普通文件
-size n [c] 查找文件長度為n塊的文件
帶有c時表示文件長度以位元組計
-fstype 查找位於某一類型文件系統中的文件
這些文件系統類型通常可以在配置文件/etc/fstab中找到
該配置文件中包含了本系統中有關文件系統的信息
-mount 在查找文件時不跨越文件系統mount點
-follow 如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件

按名稱查找

-name選項是find命令最常用的選項,要麼單獨使用該選項,要麼和其他選項一起使用

註意:可以使用某種文件名模式來匹配文件,記住要用引號將文件名模式引起來

不管當前路徑是什麼,如果想要在自己的根目錄$HOME中查找文件名符合*.txt的文件
則使用~作為'pathname'參數,波浪號~代表了你的$HOME目錄

[root@VM_200_13_centos ~]# touch tokyohot.txt
[root@VM_200_13_centos ~]# find ~ -name "*.txt"
/root/tokyohot.txt
[root@VM_200_13_centos ~]# cd /
[root@VM_200_13_centos /]# find ~ -name "*.txt"
/root/tokyohot.txt

在當前目錄及子目錄中查找所有的*.txt文件

[root@VM_200_13_centos firmware]# find . -name "*.txt" -print
./ar3k/1020201/RamPatch.txt
./ar3k/30101/RamPatch.txt
./ar3k/30101coex/RamPatch.txt
./ar3k/1020200/RamPatch.txt
./ar3k/30000/RamPatch.txt
./qca/NOTICE.txt
./ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt
./TDA7706_OM_v3.0.2_boot.txt
./TDA7706_OM_v2.5.1_boot.txt

想要在/etc目錄中查找文件名以host開頭的文件

[root@VM_200_13_centos firmware]# find /etc -name "host*"    
/etc/selinux/targeted/modules/active/modules/hostname.pp
/etc/host.conf
/etc/hosts
/etc/hosts.deny
/etc/hostname
/etc/hosts.allow

按許可權查找

按文件許可權模式來查找文件的話。最好使用三位十進位的許可權表示法

如在當前目錄下查找文件許可權位為755的文件,即屬主可以讀、寫、執行,其他用戶可以讀、執行的文件

[root@VM_200_13_centos ~]# find -perm 755       
[root@VM_200_13_centos ~]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 17 00:47 tokyohot.txt
[root@VM_200_13_centos ~]# chmod 755 tokyohot.txt
[root@VM_200_13_centos ~]# find -perm 755
./tokyohot.txt

忽略某個目錄

使用-prune選項來指出需要忽略的目錄

在使用該選項時如果同時使用-depth選項,那麼-prune選項就會被find命令忽略
/apps目錄下查找文件,但不希望在/apps/bin目錄下查找

[root@VM_200_13_centos ~]# find /apps -path "/apps/bin" -prune -o -print
/apps
/apps/d
/apps/c

查找子目錄

可能希望先匹配當前所有的文件,再在子目錄中查找
在下麵的例子中, find命令從文件系統的根目錄開始,查找一個名為CON.FILE的文件
它將首先匹配所有的文件然後再進入子目錄中查找

[root@VM_200_13_centos ~]# find / -depth -name "CON.FILE"  -print
/CON.FILE

按屬主查找

按文件屬主查找文件,如在$HOME目錄中查找文件屬主為root的文件

[root@VM_200_13_centos ~]# find -user root  -print
.
./a
./.bash_history
./.ssh
./.ssh/authorized_keys
./tokyohot.txt
./.bashrc
./.cshrc
./.bash_logout
./.tcshrc
./.bash_profile

為了查找屬主帳戶已經被刪除的文件,可以使用-nouser選項
這樣就能夠找到那些屬主在/etc/passwd文件中沒有有效帳戶的文件
在使用-nouser選項時,不必給出用戶名; find命令能夠為你完成相應的工作

root@VM_200_13_centos ~]# find /etc/ -nouser

按屬組查找

就像user和nouser選項一樣,針對文件所屬於的用戶組, find命令也具有同樣的選項

[root@VM_200_13_centos ~]# find -group root -print
.
./a
./.bash_history
./.ssh
./.ssh/authorized_keys
./tokyohot.txt
./.bashrc
./.cshrc
./.bash_logout
./.tcshrc
./.bash_profile
./.history
./.viminfo

要查找沒有有效所屬用戶組的所有文件,可以使用nogroup選項

[root@VM_200_13_centos ~]# groupadd xxx
[root@VM_200_13_centos ~]# touch xx.txt
[root@VM_200_13_centos ~]# chown :xxx xx.txt
[root@VM_200_13_centos ~]# ll xx.txt
-rw-r--r-- 1 root xxx 0 Aug 17 01:21 xx.txt
[root@VM_200_13_centos ~]# find -group xxx
./xx.txt
[root@VM_200_13_centos ~]# groupdel xxx
[root@VM_200_13_centos ~]# find -nogroup    
./xx.txt

按時間查找

如果希望按照更改時間來查找文件,可以使用mtime,atime或ctime選項

如果系統突然沒有可用空間了,很有可能某一個文件的長度在此期間增長迅速,這時就可以用mtime選項來查找這樣的文件
用減號-來限定更改時間在距今n日以內的文件
用加號+來限定更改時間在距今n日以前的文件

希望在系統/root目錄下查找更改時間在5日以內的文件

[root@VM_200_13_centos ~]# find /root -mtime -5 -print
/root
/root/a
/root/.bash_history
/root/xx.txt
/root/tokyohot.txt
/root/.history
/root/.viminfo

按類型查找

-type 查找某一類型的文件

類型 說明
-type b 查找塊設備
-type d 查找目錄
-type c 查找字元設備文件
-type p 查找管道文件
-type l 查找符號鏈接文件
-type f 查找普通文件

在/etc目錄下查找所有的目錄

[root@VM_200_13_centos ~]# find /etc -type d
/etc
/etc/selinux
/etc/selinux/targeted
/etc/selinux/targeted/contexts
/etc/selinux/targeted/contexts/users
...

按文件大小查找

可以按照文件長度來查找文件
這裡所指的文件長度既可以用塊(block)來計量
也可以用位元組來計量
以位元組計量文件長度的表達形式為nc,n代表大小
以塊計量文件長度只用數字表示即可

在按照文件長度查找文件時,一般使用這種以位元組表示的文件長度,在查看文件系統的大小,因為這時使用塊來計量更容易轉換

在當前目錄下查找文件長度大於1 M位元組的文件

[root@VM_200_13_centos ~]# find . -size +1000000c -print

在/home/apache目錄下查找文件長度恰好為100位元組的文件

[root@VM_200_13_centos ~]# find /home/apache -size 100c -print

在當前目錄下查找長度超過10塊的文件(一塊等於512位元組)

[root@VM_200_13_centos ~]# find . -size +10 -print

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Kali Linux在安裝完virtualbox後,打開虛擬機會出現:kernel driver not installed (rc=1908)錯誤提示,根據提示,大概可以看出是由於缺少內核模塊引起的,因為VirtualBox預設是在DKMS內核中運行,所以系統需要有DKMS的支持。所以最根本的是先 ...
  • 1.LCD即液晶顯示器,控制原理是控制其中的電子槍,在n行*n列的屏幕上投射不同顏色從而形成圖像 2.編程步驟: ①打開LCD背光將LCD背光對應的GPIO設置為禁止上拉(GPxUP相應位寫入1),選擇output類型(GPxCON相應位寫入01),輸出為高電平(GPxDAT相應位寫入1)。 ②打開 ...
  • 1.ifconfig查看和配置網路介面信息(1)設ip地址ifconfig eth0 192.168.0.1(2)暫時關閉或啟用網卡ifconfig eth0 downifconfig eth0 up(3)設子網掩碼ifconfig eth0 netmask 255.255.255.0(4)查看第一 ...
  • 1.什麼是shell?Shell是用戶和Linux操作系統之間的介面。Linux中有多種shell,其中預設使用的是Bash。 2.shell的分類(1)bash bash shell 是 Bourne shell 的一個免費版本,它是最早的 Unix shell,包括許多附加的特點。Bash 有可 ...
  • ...
  • 標題:sed命令的使用 作用:sed是以行為單位處理文本數據,可以對數據按行進行選取(顯示)、替換、刪除和新增等功能。 一、用法 sed [-nefr] [動作] 參數: -n:使用安靜模式,取消自動列印模式空間。在一般來自STDIN的數據一般都會被列出到屏幕上,但如果加上-n參數後,則只有經過se ...
  • 1、在mac上安裝好了mysql-5.7.14 ,會自動生成一個初始密碼,這個初始密碼一定要記住: 在終端中輸入:mysql -u root -p,提示:mysql: command not found。這是因為沒有配置環境變數; 2、配置環境變數,即配置.bash_profile文件,~/.zsh ...
  • 今日頭條創立於2012年3月,到目前僅4年時間。從十幾個工程師開始研發,到上百人,再到200餘人。產品線由內涵段子,到今日頭條,今日特賣,今日電影等產品線。 一、產品背景 今日頭條是為用戶提供個性化資訊客戶端。下麵就和大家分享一下當前今日頭條的數據(據內部與公開數據綜合): 5億註冊用戶 2014年 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...