文件查找命令之locate,find

来源:https://www.cnblogs.com/yukri/archive/2018/01/28/8371596.html
-Advertisement-
Play Games

文件查找在文件系統上查找符合條件的文件文件查找命令:locate:非實時查找( 資料庫查找)find:實時查找 locate:查詢系統上預建的文件索引資料庫/var/lib/mlocate/mlocate.db 依賴於事先構建的索引索引的構建是在系統較為空閑時自動進行( 周期性 任務),管理員 手動 ...


文件查找
在文件系統上查找符合條件的文件
文件查找命令:
locate:非實時查找( 資料庫查找)
find:實時查找

locate:
查詢系統上預建的文件索引資料庫
/var/lib/mlocate/mlocate.db

依賴於事先構建的索引
索引的構建是在系統較為空閑時自動進行( 周期性 任務),管理員 手動更新資料庫(updatedb)

索引構建過程需要遍歷整個根文件系統,極消耗資源
工作特點:
• 查找速度快
• 模糊查找
• 非實時查找
• 搜索的是文件的全路徑,不僅僅是文件名
• 可能只搜索用戶具備讀取和執行許可權的目錄
locate 命令
locate KEYWORD

-i:執行不區分大小寫的搜索

-n N:只列舉前N 個匹配項目

-b:只匹配路徑中的基名

-c:只顯示統計多少個符合條件的路徑

-r:能基於基本正則表達式來編寫命令

locate foo
• 搜索名稱或路徑中帶有“foo ”的文件
locate -r ‘.foo$’
• 使用Regex 來搜索以“.foo ”結尾的文件

find
實時查找工具,通過遍歷指定路徑完成文件查找;
工作特點:
• 查找速度略慢
• 精確查找
• 實時查找
• 可能只搜索用戶具備讀取和執行許可權的目錄
用法:
find [OPTION]... [ 查找路徑] [ 查找條件] [ 處理動作]

查找路徑:
指定具體目標路徑,預設為當前目錄
查找條件:
指定的查找標準,可以文件名、大小、類型、許可權等標準進行;預設為找出指定路徑下的所有文件
處理動作:
對符合條件的文件做操作,預設輸出至屏幕

查找條件
表達式:選項和測試
根據文件名和inode 查找:
-name " 文件名稱":支持使用glob *, ?, [], [^]

-iname " 文件名稱":不區分字母大小寫

-inum n:按inode 號查找

-samefile name:相同inode 號的文件

-links n:鏈接數為n 的文件

-regex "PATTERN":以PATTERN(正則表達式)匹配整個文件路徑字元串,而不僅僅是文件名稱ID

根據屬主、屬組查找:
-user USERNAME:查找屬主為指定用戶(UID) 的文件

-group GRPNAME:查找屬組為指定組(GID) 的文件

-uid UserID:查找屬主為指定的UID 號的文件

-gid GroupID:查找屬組為指定的GID 號的文件

-nouser:查找沒有屬主的文件

-nogroup:查找沒有屬組的文件

根據文件類型查找:
-type TYPE
f:普通文件

d:目錄文件

l:符號鏈接文件

s:套接字文件

b:塊設備文件

c:字元設備文件

p:管道文件

組合條件:
與:-a

或:-o

非:-not !

德· 摩根 定律:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
find 示例
find -name snow.png
搜索名為snow.png 的文件

find -iname A.png
不分大小寫查找名為A.png 、a.png、 A.PNG 等等的文件
find / -name “.txt”
查找根目錄下尾碼名為txt的文件
find /var –name "
log*"
查找var目錄下包含log的文件
find -user test -group test
搜索被用戶test 以及組群test所擁有的文件

其它示例:
find -user test -not -group test
find -user test -o -user test
find -not ( -user test -o -user test )
find / -user test -o -uid 500

找出/tmp 目錄下,屬主不是root ,且 文件名 不以f 開頭的 文件
find /tmp ( -not -user root -a -not -name 'f' ) -ls
find /tmp -not ( -user root -o -name 'f
' ) –ls

排除目錄
示例:查找/etc/ 下,除/etc/sane.d 目錄的其它所有.conf 尾碼的文件
find /etc -path ‘/etc/sane.d’ -a -prune -o -name “*.conf” -print

根據文件大小來查找:
-size [+,-]#unit
常用單位:k, M, G

如:6k 表示(5k,6k]
-#unit :[0到#-1]
如:-6k 表示[0到5k]
+#unit :(#和大於#)
如:+6k 表示(6k或大於6k )

根據時間戳
以天為單位(time):
-atime [+|-]# 訪問時間

+#:表示(#+1)天之外被訪問

-#:表示#天內被訪問過的

#:表示小於(#+1)大於或者#天的時間段被訪問過

-ctime:改變時間
-mtime:修改時間
以分鐘為單位(min)
-amin
-mmin
-cmin

根據許可權查找:
-perm [+|-]MODE

MODE:精確匹配

+MODE:任何一類用戶的任何一位許可權匹配即可,常用於查找某類用用戶的某特定許可權是否存在

-MODE:每類用戶的指定要檢查的許可權位都匹配

示例:
find -perm 755,會匹配許可權模式恰好是755 的文件
只要當任意人有寫許可權時,find -perm +222 就會匹配
只有當每個人都有寫許可權時,find -perm -222 才會匹配
只有當其它人(other )有寫許可權時,find -perm -002才會匹配

處理動作:

-print:預設,列印在標準輸出上

-ls:以長格式輸出各文件信息,類似於ls -l

-delete:刪除查找到的文件

-fls file:查找到的所有文件的長格式信息保存至指定文件中

-exec COMMAND {} ;:對查找到的文件指定的命令

-ok COMMAND {} ;:互動式,對查找到的每個文件執行由COMMAND 指定的命令

find |xargs COMMAND: find把查找到的所有文件一次性地傳遞給-exec執行

{}:用於引用查找到的文件名稱自身

參數代換:xargs
用於產生某個命令的參數 xargs 入可以讀入stdin的數據,並且以空格符或回車符將stdin的數據分隔成為arguments

註意:文件名或者是其他意義的名詞內含有空格符的情況

有些命令不能接受過多參數 ,命令執行可能會失敗,xargs可以解決
示例:
find | xargs COMMAND
find /sbin -perm +7000 | xargs ls -l

示例:
find -name “*.conf” -exec cp {} {}.orig ;
備份配置文件,添加.orig 這個擴展名

find /tmp -ctime +3 -user joe -ok rm {} ;
提示刪除存在時間超過3天以上的joe 的臨時文件

find ~ -perm -002 -exec chmod o-w {} ;
在你的主目錄中尋找可被其它用戶寫入的文件

find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} ;

find /home –type d -ls


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

-Advertisement-
Play Games
更多相關文章
  • 從記憶體中載入的程式集,無路徑 IIS中路徑 protected void Page_Load(object sender, EventArgs e) { Response.Write("程式集路徑"+System.Reflection.Assembly.GetExecutingAssembly().... ...
  • 【01】淺談HTTP在WebApi開發中的運用 【02】聊聊WebApi體繫結構 【03】詳解WebApi如何傳遞參數 【04】詳解WebApi測試和PostMan 【05】淺談WebApi Cores 【06】詳解WebApi 異常處理 【07】用WebAPI寫個基於EF的CURD 【08】淺談W ...
  • 源自:https://segmentfault.com/q/1010000000534091?_ea=178721 Model:很簡單,就是業務邏輯相關的數據對象,通常從資料庫映射而來,我們可以說是與資料庫對應的model。 View:也很簡單,就是展現出來的用戶界面。 基本上,絕大多數軟體所做的工 ...
  • 前面說過,每個線程都有自己的資源,但是代碼區是共用的,即每個線程都可以執行相同的函數。這可能帶來的問題就是幾個線程同時執行一個函數,導致數據的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。 C#提供了一個關鍵字lock,它可以把一段代碼定義為互斥段(critical section),互 ...
  • 1.最新版本 2.打開文件,將包含以下文件: Ext.Net.dll Ext.Net.Utilities.dll Ext.Net.xml Newtonsoft.Json.dll Newtonsoft.Json.xml 3.打開 Visual Studio,創建C#網站項目 打開菜單創建網站 彈出"創 ...
  • http://blog.csdn.net/dndxhej/article/details/7434615 對sysfs和設備模型有瞭解的都會知道sysfs實際是為了將設備模型導出到用戶空間的一個記憶體文件系統。 設備模型的關鍵結構體kobject會組成設備模型的樹形結構,而sysfs的關鍵結構體sys ...
  • 工作原理: 簡單的來說,Sed一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱之為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕,接著處理下一行,直到文件末尾。 語法: sed [option] [script'(se ...
  • 堅持知識分享,該文章由Alopex編著, 轉載請註明源地址: http://www.cnblogs.com/alopex/ 索引: 什麼是shell shell的分類 shell腳本的執行方式 摘要: 瞭解shell的本質是什麼 瞭解除bash這個shell之外,還有哪些shell shell 腳本 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...