linux文件查找利器 非find莫屬

昨天看到羣裏在不少羣友討論find命令,那麼今天我就和你們聊聊工做中的find命令的使用:
算法


1、find語法sql

Usage:find PATHNAME [-option] [-exec|-ok command] {} \;數據庫

  • PATHNAME:查找的路徑名vim

  • [option]:可選擇要匹配的參數bash

  • [-exec|-ok command]:將查找的文件執行command操做oracle

  • {}:查找到的文件名ide

  • \;:反斜槓表明轉義,分號表明結束符spa


2、find參數日誌

  • -nameblog

按文件名字查找
  • -perm

按文件權限查找
  • -user

按文件屬主查找
  • -group

按文件屬組查找
  • -nouser

查找無有效屬主的文件,即文件的屬組在/etc/groups中不存在
  • -nogroup

#查找無有效屬組的文件,即文件的屬主在/etc/groups中不存在

  • -mtime(mmin)  -n +n

按文件更改時間來查找文件,-n指n天(分鐘)之內,+n指n天(分鐘)之前
  • -atime(amin)  -n +n

按文件訪問時間來查找文件,-n指n天(分鐘)之內,+n指n天(分鐘)之前
  • -ctime(cmin)  -n +n

按文件建立時間來查找文件,-n指n天(分鐘)之內,+n指n天(分鐘)之前
  • -never f1 !f2

查找更改時間比f1新但比f2舊的文件
  • -type [b| d| c| p| l| f]

查找塊設備,目錄,字符設備,管道、符號連接、普通文件
  • -size n[c]

查長度爲n塊[或n字節]的文件
  • -depth

查找於某一類型文件系統中的文件,這些文件系統類型一般可在/etc/fstab中找到
  • -mount

查文件時不跨越文件系統mount點
  • -follow

若是遇到符號連接文件,就跟蹤連接所指的文件
  • -prune

忽略某個目錄,若是同時使用了-depth選項,那麼-prune選項將被find命令忽略。

3、find案列

一、查找指定目錄下大於300M的文件,並將其移動到指定的路徑中

# find ~ -size +300M
# find ~ -size +300M -exec mv {} ~/sql/ \;

二、查找指定目錄下大於300M的文件,並將其刪除的兩種方式

# find ./ -size +300M -delete
# find ./ -size +300M -exec rm -rf {} \;

三、查找指定目錄下大於1G而小於1.5G的文件

# find ./ -size +1G -size -1.5G

四、查找指定目錄下非.sh結尾的文件的兩種方法

# find ./ -not -name '*.sh'
# find ./ ! -name '*.sh'

五、刪除7天前對數據庫的備份文件

# find /bakcup/ -type f -name '*.sql' -mtime +7 -exec rm -rf {} \;

六、查找當前目錄下以.sh結尾的文件,可是排除子目錄爲script目錄下的文件

# find . -path './script' -prune -o -name '*.sh'

七、查找當前目錄下以.py結尾的文件,並將其修改成.pyc

# find ./ -name '*.py' -exec mv {} '{}c' \;

八、查找當前目錄下全部文件,並把文件中的hello字符串替換成Hello

# echo 'hello world!' > test01.txt
# echo 'hello teacher!' > test02.txt
# find ./ -type f -exec sed -i 's@hello@Hello@g' {} \;	

4、find搭配日誌重點闡述

  • 一、時間搜索

atime(access time):訪問時間;指的是文件最後讀取的事件,可使用touch命令更改當前時間

ctime(change time):變動時間;指的是文件自己最後被變動的事件,變動動做是chmod、chgrp、mv等

mtime(modify time):修改時間,指的是文件內容最後被修改的事件,修改動做echo重定向、vim等

  • 二、時間語法

find PathName {-atime/-ctime/-mtime/-amin/-cmin/-mmin[-/+]num

第一個參數:查找文件的路徑名

第二個參數:前面的字母a、c、m分別表示訪問、變動、修改;time爲日期,min爲分鐘

第三個參數:不應符號表示符合這個值得,'-'表示之內的,'+'表示之前的

  • 三、時間小練習

  • 查找當前目錄中,當天被訪問過的文件:時間單位爲day

# find ./ -atime 0
  • 查找當前目錄中,距離此刻5分鐘之前10分鐘之內被修改過的文件:時間單位爲min

# find ./ -mmin -10 -min +5
  • 另外補充一個額外的命令xargs

  • 此命令的使用很相似於find的exec參數,好比:

# find ./ -type f | xargs chmod 755
# find ./ -type f | xargs echo '' > /root/filename.log
# find ./ -type f | xargs rm -rf

網上的一篇文章:

find mtime的事件算法:http://www.oracleblog.org/study-note/how-to-calculate-find-mtime/

相關文章
相關標籤/搜索