Linux - Shell - find - 進階: 時間與大小


  1. 概述

    1. 繼續 find
    2. 這次的內容, 參數稍微要 復雜那么一丟丟
  2. 背景

    1. 剛學會了 基礎 的參數
    2. 現在來了解一些 時間 和 空間 的參數
      1. 一說到操控時間空間, 感覺立馬起來了...
  3. 准備

    1. OS
      1. centos7
    2. 用戶
      1. root

1. linux 文件時間戳

  1. 概述

    1. linux 文件時間戳回顧
  2. 時間戳

    1. linux 文件有 3 個時間戳
      1. a
        1. 訪問, 讀入內存
      2. c
        1. 修改元數據, inode 數據
      3. m
        1. 修改數據, 文件數據
  3. find 與時間

    1. 支持
      1. find 支持這三種時間, 作為約束條件
      2. 但是三種又 大同小異
      3. 所以, 我只選擇 mtime 來做演示

2. find 時間參數的一些格式

  1. +n

    1. > n
      1. 以 時間為例, 單位是 分鍾
        1. n = 1, 范圍是 [1:00, 無窮大]
  2. -n

    1. < n
      1. 以 時間為例, 單位是 分鍾
        1. n = 1, 范圍是 [0:00, 1:00]
  3. n

    1. 精確 = n
      1. 也不是很精確
      2. 以 時間為例
        1. n = 1, 范圍是 [0:00, 1:00]
        2. n = 2, 范圍是 [1:00, 2:00]
  4. 其他

    1. 作用范圍

      1. 時間
        1. min 類選項
        2. time 類選項
      2. 空間
        1. size 類選項
    2. 區間的端點, 可能會不那么精確

      1. 查找的時候, 盡量不要讓要找的內容, 在 時間邊界 上

3. 約束: mmin, mtime

  1. 概述

    1. 編輯時間的約束
    2. 另外兩個時間風格類似, 就不重復介紹了
  2. 選項

    1. -mmin

      1. 概述

        1. 編輯時間過濾
        2. 單位是 min
      2. 作用

        1. 查找 最后編輯時間, 在 n 分鍾的內容
    2. -mtime

      1. 概述

        1. 編輯時間過濾
        2. 單位是 天
        3. 無視 時區
      2. 作用

        1. 查找 最后編輯時間, 在 n 天的內容
  3. 命令

    # 查詢 編輯時間距現在在 [1:00, 2:00] 區間內的內容
    > find /etc -mmin 2
    # 查詢 編輯時間距現在在 [0:00, 2:00] 區間內的內容
    > find /etc -mmin -2
    # 查詢 編輯時間距現在在 [2:00, 正無窮] 區間內的內容
    > find /etc -mmin +2
    
    
    # 查詢 編輯時間距現在在 [1day, 2day] 區間內的內容
    > find /etc -mtime 2
    # 查詢 編輯時間距現在在 [0day, 2day] 區間內的內容
    > find /etc -mtime -2
    # 查詢 編輯時間距現在在 [2day, 正無窮] 區間內的內容
    > find /etc -mtime +2
    
  4. 其他參數

    1. atime
      1. amin
      2. atime
    2. ctime
      1. cmin
      2. ctime

4. 約束: newer

  1. 概述

    1. 編輯時間的維度
    2. 這次的參數, 是另一個 參照物文件
  2. -newer

    1. 作用
      1. 后面跟一個文件

        1. 比這個文件 更新的內容, 會被 搜索出來
      2. 疑問: 有 older 嗎?

        1. 這個我目前沒有找到...
  3. 命令

    > find /etc -newer /etc/passwd
    
  4. 其他參數

    1. atime
      1. anewer
    2. ctime
      1. cnewer

5. 約束: size

  1. 概述

    1. 文件大小相關的約束
  2. -size

    1. 作用

      1. 以 文件大小作為 約束條件
    2. 單位

      1. b

        1. 不是 byte
        2. 大小為 512 byte
        3. 為什么是這個奇怪的大小
          1. 很多硬盤的 block, 剛好也是這個大小
          2. 不知道是先有哪個, 反正這倆大小剛好一樣
      2. c

        1. byte / B
      3. w

        1. 2bytes
      4. k

        1. KB
      5. M

        1. MB
      6. G

        1. GB
    3. 我也不知道為啥

      1. M 以下的都要小寫
    4. 常用

      1. ckMG 四個足矣
  3. 例子

    # 查找大小為 1k 的文件
    > find /etc -size 1k
    # 查找大小小於 1k 的文件
    > find /etc -size -1k
    # 查找大小大於 1k 的文件
    > find /etc -size +1k
    # 這個 -/+ 上面有說, 我就不再提了
    

ps

  1. ref

    1. find(1) - Linux man page
  2. 后續

    1. 文件的范圍與層次
      1. depth
      2. 復合的range
  3. 感覺

    1. 這個地方單獨提出來的理由
      1. 上一篇講得東西, 感覺是 最日常 的
      2. 這里的東西, 稍微日常一點, 而且 那個參數格式的東西, 第一次見到的話, 可能要蒙圈一下
        1. 我也不知道, 是不是我第一次見到的那個人, 講得太爛...
    2. 下一篇可能是最后了吧
      1. 其實還有 exec {} \ 的內容, 但是 理解了 xargs 之后, 會發現 xargs 其實更加強大
        1. 所以我打算用 xargs 來處理類似的需求


免責聲明!

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



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