Linux下搜索文件常用方法


  • 用which命令查找可以知曉文件的絕對路徑

  這個命令比較常用,例如查找bin、python、vim、find、cat的絕對路徑

root@ip-172-31-8-212:~# which find /usr/bin/find root@ip-172-31-8-212:~# which bash /bin/bash root@ip-172-31-8-212:~# which python /usr/bin/python root@ip-172-31-8-212:~# which vim /usr/bin/vim

  • whereis查找預先生成的文件列表庫中的文件名與相關的文件,格式為:whereis [-bms] 文件名稱

    -b:只查找二進制文件

    -m:支叉子幫助文件(查找man目錄下的文件)

    -s:支叉子源代碼文件

    

root@ip-172-31-8-212:~# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

  模糊查找,whereis命令很少使用

  

  •   locate命令查找文件

  locate命令也是通過查找預先生成的文件列表庫來告訴用戶要查找的文件在哪里,后面直接跟文件名,如果沒有此命令,需要進行安裝,安裝命令如下:

 

 yum install -y mlocate
  •   使用find命令搜索文件

  此命令是使用較多的一個,格式為:find 【路徑】 【參數】

        # linux文件無創建時間
        # Access 使用時間  
        # Modify 內容修改時間  
        # Change 狀態改變時間(權限、屬主)
        # 時間默認以24小時為單位,當前時間到向前24小時為0天,向前48-72小時為2天
        # -and 且 匹配兩個條件 參數可以確定時間范圍 -mtime +2 -and -mtime -4
        # -or 或 匹配任意一個條件

        find /etc -name "*http*"     # 按文件名查找
        find . -type f               # 查找某一類型文件
        find / -perm                 # 按照文件權限查找
        find / -user                 # 按照文件屬主查找
        find / -group                # 按照文件所屬的組來查找文件
        find / -atime -n             # 文件使用時間在N天以內
        find / -atime +n             # 文件使用時間在N天以前
        find / -mtime +n             # 文件內容改變時間在N天以前
        find / -ctime +n             # 文件狀態改變時間在N天前
        find / -mmin +30             # 按分鍾查找內容改變
        find / -size +1000000c -print                           # 查找文件長度大於1M字節的文件
        find /etc -name "*passwd*" -exec grep "xuesong" {} \;   # 按名字查找文件傳遞給-exec后命令
        find . -name 't*' -exec basename {} \;                  # 查找文件名,不取路徑
        find . -type f -name "err*" -exec  rename err ERR {} \; # 批量改名(查找err 替換為 ERR {}文件
        find 路徑 -name *name1* -or -name *name2*               # 查找任意一個關鍵字
        find /var/adm -mtime +3 -print                           #為了在/var/adm目錄下查找更改時間在3日以前的文件
        find . -newer age.awk ! -newer belts.awk -exec ls -l {} \; #查找更改時間唄文件age.awk新但比文件belts.awk舊的文件
        find /etc -type d -print                                 #查找/etc目錄下所有的目錄
        find /etc ! -type d -print                                 #查找/etc下除了目錄之外的所有類型的文件
        find /etc -type l -print                                 #查找/etc下所有的符號鏈接文件


實例如下:
find命令實例
簡單地使用find命令查找指定目錄下的某個文件的方法如下:
#find /etc -name inittab 
/etc/inittab
#在當前目錄下,查找名稱為inittab的文件:
#find . -name inittab ./inittab
#找出當前目錄下,文件名不區分大小寫是example的所有文件: 
$find . -iname example 
./example ./Example
#找出當前目錄下,目錄名是tmp的目錄:
$ find . -type d -name tmp 
./tmp
#找出當前目錄下所有sh文件:
$ find . -type f -name "*.sh" 
./login.sh ./index.sh
#找出當前目錄下,文件權限是777的所有文件: 
$find. -type f -perm 0777
#找出當前目錄下,文件權限不是777的所有文件: 
$ find . -type f ! -perm 777
#找出/etc/目錄下所有只讀文件: 
find . -type f ! -perm /a+w
#找出你賬號的主目錄下的所有可執行文件:
$ find ~ -type f -perm /a+x
#找出/tmp目錄下的.log文件並將其刪除:
$find /tmp/ -type f -name "*.log" -exec rm -f {} \;
#找出當前目錄下的所有空文件: 
$find . -type f -empty
#找出當前目錄下的所有空目錄: 
$find . -type d –empty
#找出/tmp目錄下的所有隱藏文件: 
$find /tmp/ -type f -name ".*"
#找出/tmp目錄下,所有者是root的文件和目錄: 
$find /tmp/ -user root
#找出/tmp目錄下,用戶組是developer的文件和目錄:
$find /tmp/ -group developer
#找出你賬號的主目錄下,3天前修改的文件: 
$ find ~ -type f -mtime 3
#找出你賬號的主目錄下,30天以前修改的所有文件:
$ find ~ -type f -mtime +30
#找出你賬號的主目錄下,3天以內修改的所有文件: 
$ find ~ -type f -mtime -3
#找出你賬號的主目錄下,30天以前60天以內修改的所有文件:
$ find ~ -type f -mtime +30 -mtime -60
#找出/etc目錄下,一小時以內變更過的文件: 
find /etc -type f –cmin -60
#找出/etc目錄下,一小時以內訪問過的文件: 
find /etc -type f -amin -60
#找出你賬號的主目錄下,大小是50MB的所有文件:
$find ~ -type f -size 50MB
#找出你賬號的主目錄下,大於50MB小於100MB的所有文件:
$ find ~ -type f -size +50MB -size -100MB
#找出你賬號的主目錄下,大於100MB的文件並將其刪除: 
$ find ~ -type f -size +100MB -exec rm –rf {} \;
 

 


免責聲明!

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



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