linux命令之--find

1、根據文件或正則表達式查找
  • 在/home目錄下查找以.txt結尾的文件名

    find /home -name "*.txt"

  • 在/home目錄下查找以.txt結尾的文件名,忽略大小寫

    find /home -iname "*.txt"

  • 當前目錄及子目錄下查找所有以.txt和.pdf結尾的文件

    find . -name "*.txt" -o -name "*.pdf"

  • 基於正則表達式匹配文件路徑

    find . -regex ".*\\(\\.txt\\|\\.pdf\\)$"

  • 找出/home下不是以.txt結尾的文件

    find /home ! -name "*.txt"

2、根據文件類型查找

find . -type 類型參數

  • 類型參數
    • f 普通文件
    • l 符號連接
    • d 目錄
    • c 字符設備
    • b 塊設備
    • s 套接字
    • p Fifo
3、基於目錄深度查找
  • 向下最大深度限制爲3

    find . -maxdepth 3 -type f

  • 搜索距離當前目錄深度至少2個子目錄的所有文件

    find . -mindepth 2 -type f

4、根據文件時間戳查找

find . -type f 時間戳

  • UNIX/Linux文件系統每個文件都有三種時間戳:

    • 訪問時間(-atime/天,-amin/分鐘):用戶最近一次訪問時間。
    • 修改時間(-mtime/天,-mmin/分鐘):文件最後一次修改時間。
    • 變化時間(-ctime/天,-cmin/分鐘):文件數據元(例如權限等)最後一次修改時間。
  • 搜索最近七天內被訪問過的所有文件

    find . -type f -atime -7

  • 搜索恰好在七天前被訪問過的所有文件

    find . -type f -atime 7

  • 搜索超過七天內被訪問過的所有文件

    find . -type f -atime +7

  • 搜索訪問時間超過10分鐘的所有文件

    find . -type f -amin +10

  • 找出比file.log修改時間更長的所有文件

    find . -type f -newer file.log

5、根據文件大小搜索

find . -type f -size 文件大小單元

  • 文件大小單元:

    • b —— 塊(512字節)
    • c —— 字節
    • w —— 字(2字節)
    • k —— 千字節
    • M —— 兆字節
    • G —— 吉字節
  • 搜索大於10KB的文件

    find . -type f -size +10k

  • 搜索小於10KB的文件

    find . -type f -size -10k

  • 搜索等於10KB的文件

    find . -type f -size 10k

  • 刪除當前目錄下所有.txt文件

    find . -type f -name "*.txt" -delete

6、根據文件權限/所有權搜索
  • 當前目錄下搜索出權限爲777的文件

    find . -type f -perm 777

  • 找出當前目錄下權限不是644的php文件

    find . -type f -name "*.php" ! -perm 644

  • 找出當前目錄用戶root擁有的所有文件

    find . -type f -user root

  • 找出當前目錄用戶組worker擁有的所有文件

    find . -type f -group worker

7、藉助-exec選項與其他命令結合使用
  • 找出當前目錄下所有root的文件,並把所有權更改爲用戶worker

    find . -type f -user root -exec chown worker {} \\;

  • 找出自己目錄下所有的.txt文件並刪除

    find $HOME/. -name "*.txt" -ok rm {} \\;

  • 查找當前目錄下所有.txt文件並把他們拼接起來寫入到all.txt文件中

    find . -type f -name "*.txt" -exec cat {} \\;> all.txt

  • 將30天前的.log文件移動到old目錄中

    find . -type f -mtime +30 -name "*.log" -exec cp {} old \\;

  • 找出當前目錄下所有.txt文件並以“File:文件名”的形式打印出來

    find . -type f -name "*.txt" -exec printf "File: %s\n" {} \\;

  • {} 用於與 -exec選項結合使用來匹配所有文件,然後會被替換爲相應的文件名。

  • -ok-exec行爲一樣,不過它會給出提示,是否執行相應的操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章