每一種操作系統都是由成千上萬個不同種類的文件所組成的
其中有系統本身自帶的文件
用戶自己的文件
還有共享文件等等
我們有時候經常忘記某份文件放在硬盤中的哪個地方
在微軟的WINDOWS操作系統中要查一份文件是相當簡單的事情
只要在桌面上點擊
開始
>
搜索
中就能按照各種模式在本地硬盤上
局域網絡
甚至在INTERNET上查各種文件及檔案
可是使用Linux的用戶就沒有那麼幸運了
在Linux上查 某個文件確實是一件比較麻煩的事情
畢竟在Linux中需要我們使用專用的
查
命令來尋找在硬盤上的文件
Linux下的文件表達格式非常復雜
不象WINDOWS
DOS下都是統一的AAAAAAA
BBB格式那麼方便查
在WINDOWS中
只要知道要查的文件的文件名或者後綴就非常容易查到
Linux中查 文件的命令通常為
find
命令
find
命令能幫助我們在使用
管理Linux的日常事務中方便的查 出我們需要的文件
對於Linux新手來說
find
命令也是了解和學習Linux文件特點的方法
因為Linux發行版本繁多
版本升級很快
在Linux書籍上往往寫明某個配置文件的所在位置
往往Linux新手按圖索骥還是不能找到
比如說REDHAT Linux
O和REDHAT Linux
中有些重要的配置文件所在的硬盤位置和文件目錄就有了很大的改變
如果不學會使用
find
命令
那麼在成千上萬的Linux文件中要找到其中的一個配置文件是相當困難的
筆者在沒有精通
find
命令之前就吃過這樣的苦頭
好
下面就詳細為大家介紹強大的
find
命令的全部使用方法和用途
透過文件名查法︰
這個方法說起來就和在WINDOWS下查 文件一樣容易理解了
如果你把這個文件放在單個的活頁夾裡面
只要使用常見的
ls
命令就能方便的查 出來
那麼使用
find
命令來查 它就不能給你留下深刻的印象
畢竟
find
命令的強大功能不止這個
如果知道了某個文件的文件名
而不知道這個文件放到哪個活頁夾
甚至是層層套嵌的活頁夾裡
舉例說明
假設你忘記了這個文件在系統的哪個目錄下
甚至在系統的某個地方也不知道
則這是可以使用如下命令︰
find /
name
這個命令語法看起來很容易就明白了
就是直接在find後面寫上
name
表明要求系統按照文件名查
最後寫上這個目標文件名即可
稍等一會系統會在計算器屏幕上顯示出查 結果列表︰
etc/
這就是這個文件在Linux系統中的完整路徑
查成功
如果輸入以上查命令後系統並沒有顯示出結果
那麼不要以為系統沒有執行find/
name 命令
而可能是你的系統中沒有安裝Apache服務器
這時只要你安裝了Apache Web服務器
然後再使用find /
name 就能找到這個配置文件了
無錯誤查技巧︰
在Linux系統中
find
命令是大多數系統用戶都可以使用的命令
並不是ROOT系統管理員的專利
但是普通用戶使用
find
命令時也有可能遇到這樣的問題
那就是Linux系統中系統管理員ROOT可以把某些文件目錄設置成禁止訪問模式
這樣普通用戶就沒有權限用
find
命令來查詢這些目錄或者文件
當普通用戶使用
find
命令來查詢這些文件目錄是
往往會出Permissiondenied
(禁止訪問)字樣
系統將無法查詢到你想要的文件
為了避免這樣的錯誤
我們可是使用轉移錯誤提示的方法嘗試著查文件
輸入find /
name access_log
>/dev/null
這個方法是把查 錯誤提示轉移到特定的目錄中去
系統執行這個命令後
遇到錯誤的訊息就直接輸送到stderrstream
中
access_log
就是表明系統將把錯誤訊息輸送到stderrstream
中
/dev/null是一個特殊的文件
表明空的或者錯誤的訊息
這樣查詢到的錯誤訊息將被轉移了
不會再顯示了
在Linux系統查 文件也會遇到這樣一個實際問題
如果我們在整個硬盤
這個系統中查 某個文件就要花費相當長的一段時間
特別是大型Linux系統和容量較大的硬盤
文件放在套嵌很深的目錄中的時候
如果我們知道了這個文件存放在某個大的目錄中
那麼只要在這個目錄中往下找就能節省很多時間了
使用find /etc
name
就可以解決這個問題
上面的命令就是表示在etc目錄中查詢這個文件
這裡再說明一下
/
這個函數符號的含義
如果輸入
find/
就是表示要求Linux系統在整個ROOT目錄下查 文件
也就是在整個硬盤上查 文件
而
find/etc
就是只 在 etc目錄下查 文件
因為
find/etc
表示只在etc目錄下查 文件
所以查 的速度就相應要快很多了
根據部分文件名查 方法︰
這個方法和在WINDOWS中查 已知的文件名方法是一樣的
不過在Linux中根據部分文件名查 文件的方法要比在WINDOWS中的同類查 方法要強大得多
例如我們知道某個文件包含有srm這
個字母
那麼要找到系統中所有包含有這
個字母的文件是可以實現的
輸入︰
find /etc
name
*srm*
這個命令表明了Linux系統將在/etc整個目錄中查 所有的包含有srm這
個字母的文件
比如 absrmyz
tibc
srm等等符合條件的文件都能顯示出來
如果你還知道這個文件是由srm 這
個字母打頭的
那麼我們還可以省略最前面的星號
命令如下︰
find/etc
name
srm*
這是只有像srmyz 這樣的文件才被查 出來
象absrmyz或者 absrm這樣的文件都不符合要求
不被顯示
這樣查 文件的效率和可靠性就大大增強了
根據文件的特征查詢方法︰
如果只知道某個文件的大小
修改日期等特征也可以使用
find
命令查 出來
這和WINDOWS系統中的
搜索
功能是基本相同的
在微軟的
搜索
中WINDOWS中的
搜索助理
使得搜索文件和活頁夾
打印機
用戶以及網絡中的其它計算器更加容易
它甚至使在Internet 上搜索更加容易
搜索助理
還包括一個索引服務
該服務維護了計算器中所有文件的索引
使得搜索速度更快
使用
搜索助理
時
用戶可以指定多個搜索標准
例如
用戶可以按名稱
類型及大小搜索文件和活頁夾
用戶甚至可以搜索包含特定文本的文件
如果用戶正使用 Active Directory
這時還可以搜索帶有特定名稱或位置的打印機
例如我們知道一個Linux文件大小為
bytes
那麼我們可是使用如下命令來查詢
find /
size
c
字符 c 表明這個要查 的文件的大小是以bytes為單位
如果我們連這個文件的具體大小都不知道
那麼在Linux中還可以進行模糊查 模式來解決
例如我們輸入find/
size +
c 這個命令
則標明我們指定系統在根目錄中查出大於
字節的文件並顯示出來
命令中的
+
是表示要求系統只列出大於指定大小的文件
而使用
則表示要求系統列出小於指定大小的文件
下面的列表就是在Linux使用不同
find
命令後系統所要作出的查 動作
從中我們很容易看出在Linux中使用
find
命令的模式是很多的
find
命令查 文件只要靈活應用
絲毫不必在WINDOWS中查 能力差
find /
amin
# 查 在系統中最後
分鐘訪問的文件
find /
atime
# 查 在系統中最後
小時訪問的文件
find /
empty # 查 在系統中為空的文件或者活頁夾
find /
group cat # 查 在系統中屬於 groupcat的文件
find /
mmin
# 查 在系統中最後
分鐘裡修改過的文件
find /
mtime
#查 在系統中最後
小時裡修改過的文件
find /
nouser #查 在系統中屬於作廢用戶的文件
find /
user fred #查 在系統中屬於FRED這個用戶的文件
下面的列表就是對find命令所可以指定文件的特征進行查 的部分條件
在這裡並沒有列舉所有的查 條件
參考有關Linux有關書籍可以知道所有find命令的查函數
amin n
查 系統中最後N分鐘訪問的文件
atime n
查 系統中最後n*
小時訪問的文件
cmin n
查 系統中最後N分鐘被改變狀態的文件
ctime n
查 系統中最後n*
小時被改變狀態的文件
empty
查 系統中空白的文件
或空白的文件目錄
或目錄中沒有子目錄的活頁夾
false
查 系統中總是錯誤的文件
fstype type
查 系統中存在於指定文件系統的文件
例如︰ext
gid n
查 系統中文件數字組 ID 為 n的文件
group gname
查 系統中文件屬於gnam文件組
並且指定組和ID的文件
Find命令的控制選項說明︰
Find命令也提供給用戶一些特有的選項來控制查 操作
下表就是我們總結出的最基本
最常用的find命令的控制選項及其用法
用途描述
daystart
測試系統從今天開始
小時以內的文件
用法類似
amin
depth
使用深度級別的查 過程模式
在某層指定目錄中優先查 文件內容
follow
遵循通配符鏈接模式查 ; 另外
也可忽略通配符鏈接模式查詢
help
顯示命令摘要
maxdepth levels
在某個層次的目錄中按照遞減方法查
mount
不在文件系統目錄中查
用法類似
xdev
noleaf
禁止在非UNUX文件系統
MS
DOS系統
CD
ROM文件系統中進行最優化查
version
打印版本數字
使用
follow選項後
fin
From:http://tw.wingwit.com/Article/program/Oracle/201311/17656.html