1. 概述
使用linux server命令列系統時,經常需要進行特定檔案的查詢,主要的查詢命令是find及grep,區別如下:
1.1 find
根據檔案屬性進行查詢,如檔名、檔案大小、檔案所有者、訪問時間、修改時間、是否為空等
1.2 grep
根據檔案內容查詢,會對檔案的每一行按照給定的模式進行匹配
1.3 locate
不搜尋具體目錄,而是搜尋乙個資料庫(/var/lib/locatedb),該資料庫含有本地所有檔案資訊,系統每天僅更新該資料庫一次,因此有時候查不到最新變動過的檔案,不過可以執行該命令前可執行updatedb命令手動更新該資料庫
1. 基本格式:
find [path] [option] [expression]
2. 常見options:
2.1 按型別查詢
-type f | d | l | b | c | s | p
f 普通檔案 d 目錄 l 符號連線 c 字元裝置 b 塊裝置 s 套接字 p fifo
2.2 按使用者名稱、使用者組查詢
-user username -group groupname
2.3 按檔案大小查詢
-size +10m
+ 大於 -小於 c 位元組 k 千位元組 m 兆 g 千兆
2.4 按檔名稱或許可權查詢
-name a.c -perm 644
2.5 按檔案訪問時間或檔案狀態改變時間
-amin +10 十分鐘前被訪問過的檔案
-amin -10 十分鐘內被訪問過的檔案
-atime -1 最近1天內被訪問供的檔案
同理, -a替換為-c時白哦是檔案狀態改變時間
2.6 按搜尋目錄層級查詢
-maxdepth 3 **目錄內查詢
-mindepth 3 從**目錄開始查詢
-maxdepth 3 -mindepth 3 第**目錄查詢
2.7 對查詢結果執行命令
-ok 互動式執行linux命令
-exec 批量靜默之行linux命令
2.8 查詢條件邏輯運算
-a 且
-o 或者
-! 或 -not 條件取反
1. 從根目錄查詢 且排除/proc/路徑 屬於tom的檔案或檔案組
find / ! -path "/proc/*" -user tom
2. 對匹配的結果執行ls -lh 命令
find / ! -path "/proc/*" ! -path "/etc/x" -user tom -exec ls -lh {}
3. 刪除大於80k 小於100k的檔案
find / -type f -size +80k -size -100k -delete
find / -type f -size +80k -size -100k | xargs rm -rf
4. 將指定路徑下.c檔案更改為.**件
find ./ -name "*.c" | awk -f "." '' | xargs -i -t mv ./{}.c ./{}.h
5. 查詢所有屬於tom的檔案總的有多少兆
find . -user tom -type f -exec du -m {} ; | awk ' end { print "total used:
Linux命令之find命令
在檔案系統上查詢符合條件的檔案 檔案查詢 locate,find 非實時查詢 資料庫查詢 locate 實時查詢 find locate 依賴於事先構建的索引,索引的構建是在系統較為空閒時自動進行 週期性任務 手動更新資料庫 updatedb 索引構建過程需要遍歷整個根檔案系統,極消耗資源 工作特點...
find命令 如何排除某個目錄
find path src emacs prune o print a o和 一樣都有短路性 實際可以理解為這樣 find condition1 prune print find path src emacs a prune o print,如果find path src emacs返回真 就是找到...
Linux命令之find命令詳解
linux命令之find命令詳解 find命令是乙個在unix檔案系統中查詢檔案的常用命令,可以進行很多條件查詢。讓我們來看一些find命令的例項。語法 find 路徑 約束條件 如何查詢在檔名中含有指定關鍵字的檔案?下面這條命令查詢在 etc 目錄下所有檔名中含有 mail 的檔案。find et...