Linux - Shell - find - 基礎


  1. 概述

    1. find 基礎
  2. 背景

    1. 查找文件
      1. 人的記憶能力, 是有限的
      2. 計算機里的文件數量, 雖然不是無限, 但是也不少
      3. 要去找那些 記不清楚的文件, 必然要用查找
  3. 准備

    1. OS

      1. centos7
    2. 用戶

      1. root
        1. 其他用戶在執行中, 可能會遇到權限的問題
          1. 這里就不講了...

1. find

  1. 概述

    1. 強大的文件查找工具
  2. 功能

    1. 查找文件
    2. 約束條件查找文件
    3. 對查找后的內容, 可以執行操作
  3. 命令結構

    > find [path] [options] [opt]
    
  4. opt

    1. 概述

      1. find 之后的操作
    2. 默認

      1. 打印完整的文件路徑
    3. 其他

      1. 這個以后再說
        1. opt

2. path

  1. 概述

    1. path 參數
  2. path

    1. 搜索路徑
      1. 這個算是第一個 約束條件
      2. 約束了地址, 可以讓 查找范圍更加精確
  3. 例子

    # 1. 搜索 當前路徑 下, 所有文件
    > find 
    # 2. 搜索 特定路徑 下, 所有文件
    > find /etc
    # 3. 搜索 多個路徑 下, 所有文件
    > find ~ /etc
    

3. 約束: 文件名

  1. 概述

    1. 添加 文件名 文件名約束
  2. -name

    1. 功能
      1. 添加 文件名 的限定條件
      2. 支持 通配符
  3. 例子

    # 精確查找文件名
    > find /etc/ -name 'passwd'
    # 基於 通配符 的 模糊查找
    > find /etc/ -name 'pass*'
    
  4. 結果

    1. -name 里的條件, 匹配的是 文件名, 或者 目錄名
      1. 如果中間路徑帶有有 關鍵字 的話, 不會被 匹配出來

4. 約束: 正則路徑

  1. 概述

    1. 更加強大的 約束
    2. 約束的對象, 是 文件路徑
  2. -regex

    1. 功能
      1. 添加 路徑 的限定條件
      2. 正則
  3. 例子

    > find /etc/ -regex '.*pass.*'
    
  4. 結果

    1. 路徑匹配
      1. 路徑中含有關鍵字, 也會被 搜索出來
        1. 能力更強大
  5. 其他

    1. 還有 -regextype 可以指定 正則類型

5. 約束: 用戶

  1. 概述

    1. 以 用戶 作為約束條件
  2. -user

    1. 功能
      1. 限定 文件 或 目錄 的所屬用戶
  3. 例子

    > find /etc -user "tss"
    
  4. 其他

    1. 如果用戶不存在, 會有異常提示
    2. 如果要找沒有用戶的文件, 可以用 -nouser

6. 約束: 用戶組

  1. 概述

    1. 以 用戶組 作為約束條件
  2. -group

    1. 功能
      1. 限定 文件 或 目錄 的所屬用戶組
  3. 例子

    > find /etc -group "tss"
    
  4. 其他

    1. 如果用戶組不存在, 會有異常提示
    2. 如果要找沒有用戶組的文件, 可以用 -nogroup

7. 約束: 文件權限

  1. 概述

    1. 以 文件執行權限 作為約束
  2. -perm

    1. 功能
      1. 限定 文件權限
  3. 例子

    # 方案1: 直接查找 權限
    > find /etc -perm 755
    
  4. 其他

    1. 這個 選項 的表達方式很靈活, 我只選了最簡單的一種
      1. 如果需要了解, 請參看 man

8. 約束: 文件類型

  1. 概述

    1. 以 文件類型 作為約束
  2. -type

    1. 功能

      1. 約束類型
    2. 類型

      1. b: 塊設備
      2. c: 字符設備
      3. d: 目錄
      4. p: 管道
      5. f: 文件
      6. l: 連接
      7. s: socket
      8. D: door(Solaris 專用)
  3. 例子

    > find /etc -type f 
    

9. 后續

  1. 沒錯, 這次就這么多

    1. 這些東西算是 最簡單, 最常用 的了
  2. 后面命令, 參數會稍微 復雜一些

    1. 都寫一起, 其實不太好消化
    2. 我有點懶得寫了
    3. 最近產能不足, 干脆分成兩篇吧...

ps

  1. ref

    1. 每天一個linux命令(19):find 命令概覽
      1. 這個博客, 是我見到的 每天一個 linux 命令 系列, 最老的博客, 應該是 真正的原作 吧
    2. 每天一個linux命令(22):find 命令的參數詳解
    3. linux find -regex 使用正則表達式
  2. 通配符和正則

    1. 這個肯定是不一樣的啊
      1. 有空區分一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM