歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux中的文件查找命令

linux中文件查找常用的有兩個命令,分別是locate和find。

#locate 根據locate數據庫查找,不是實時查找,不是精確查找.速度比較快

#find 不根據數據庫查找,實時查找,遍歷目錄查找,精確查找,速度慢.

# locate 要查找的關鍵字

-n 只顯示被匹配到的前10行.

-c 統計被匹配到的結果總共有多少.

locate是根據locate數據庫進行查找的,所以速度比較快,如果一個文件剛存入linux系統,然後用locate進行查找,有可能會查找不到,因為locate的數據庫裡面,還沒有該文件的相關記錄,這時候,我們就需要手動更新locate的數據庫,使用命令

updatedb   將手動生成locate命令所依賴的數據庫

find [dir,...] [criteria,...] [action...]

如果[dir]省略,就是當前路徑.如果find後面不跟任何參數,會把當前目錄裡的所有文件及目錄全部顯示出來,包括隱藏文件

action的默認動作為顯示到屏幕上.

criteria 查找標准

-name 指定文件名.還支持globbing方式的文件名通配

find /etc/ -name "passwd?"

find /etc/ -name "*passwd*"

-iname 忽略文件名中的文件名大小寫.

-regex "PATTERN" 查找文件名中符合PATTERN中的文件,支持正則.

-user USERNAME 基於用戶查找(查找屬於某個用戶的文件)

-group GROUP_NAME

find /tmp -user redhat | ls -l 這樣不行,因為find的傳遞機制跟普通命令不太一樣

ll `find /tmp -user redhat` 這樣是可以的,引用命令.

-uid UID 基於用戶的ID號查找

-gid GID 基於組的ID號查找.

-nouser 查找所有的,沒有屬主的文件

-nogroup 查找所有的,沒有屬組的文件

-type 指定類型進行查找

f 普通文件

d 目錄

l 軟連接文件

b 塊設備

c 字符設備

p 管道文件

s 套接字文件

組合條件:

-a

-o

-not

-size 指定文件大小

10M 大小為10M的(9-10M的都符合,10M以上和9M以下不符合)

-10M 小於10M的

+10M 大於10M的

-atime 根據文件的訪問時間(單位為天)

-mtime 根據文件的修改時間 (單位為天)

-ctime 根據文件的改變時間(單位為天)

-amin 根據文件的訪問時間(單位為分鐘)

-mmin 根據文件的修改時間(單位為分鐘)

-cmim 根據文件的改變時間(單位為分鐘)

time 的默認時間為天,min的默認單位為分鐘.

例:

-atime 3 距離現在,剛好3天沒訪問的文件

-atime -3 3天以內被訪問的文件

-atime +3 已經超過3天沒被訪問的文件

-perm 755 根據文件的權限進行查找.

+755|/755 其中任何一類用戶滿足其權限都可以. /444 任何一類用戶有讀權限都可以.

-755, 每一類用戶都必須要滿足條件.

Ctrl+a 跳到命令的首部.

Ctrl+e 跳到命令的尾部.

action:

-print 把匹配到的結果打印到屏幕(默認動作,可省略.)

-ls 以長格式顯示文件信息

-ok COMANDN {} \; 查找到文件後,執行指定命令(提醒確認)

-exec COMMAND {} \; 查找到文件後,執行指定命令(不提醒確認)

-exec rm {} \; 刪除查找到的文件 {}表示引用前面查找到的文件,\;表示命令到此結束

-exec mv {} {}.txt \; 把查找到的文件重命名,在原有的名字後面加上.txt的擴展名

下面做幾個練習題

練習:

1,查找/var/ 目錄下屬主為root並且屬組為mail的所有文件;

[root@Honway scripts]# find /var -user root -group mail

/var/spool/mqueue

/var/spool/mail

2,查找/usr目錄下不屬於root,bin或student的文件;

[root@Honway scripts]#find /usr/ -not -user root -not -user bin -not -user student

/usr/local/apache2/logs/cgisock.3302

/usr/local/apache2/logs/cgisock.32138

/usr/local/apache2/logs/cgisock.3327

3,查找/etc/目錄下最近一周內內容修改過且不屬於root及apache的文件

[root@Honway scripts]# find /etc -not \( -user root -o -user apache \) -mtime -7

4,查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,並將其屬主屬組均修改為root;

[root@Honway scripts]# find / \( -nouser -o -nogroup \) -atime -1 -exec chown root:root {} \;

5,查找/etc目錄下大於1M的文件,並將其文件名寫入/tmp/etc/largefiles文件中;

[root@Honway scripts]#for i in `find /etc/ -size +1M -exec basename {} \;`;do echo $i >>/tmp/etc.largefiles ;done

[root@Honway ~]# find /etc/ -size +1M -exec basename {} >/tmp/find.out \;

6,查找/etc/目錄下所有用戶都沒有寫權限的文件,顯示出其詳細信息;

[root@Honway scripts]# ll `find /etc/ -not -perm +222`

-r-------- 1 root root 1225 02-11 10:00 /etc/gshadow

-r-------- 1 root root 1213 02-11 00:19 /etc/gshadow-

-r--r--r-- 1 root root 41286 2006-11-28 /etc/mail/submit.cf

-r--r--r-- 1 root root 628 2010-07-21 /etc/selinux/config,v

-r-------- 1 root root 3159 02-11 10:00 /etc/shadow

-r-------- 1 root root 3129 02-11 00:29 /etc/shadow-

本文出自 “吖吖個呸” 博客,請務必保留此出處http://gm100861.blog.51cto.com/1930562/788831

 

Copyright © Linux教程網 All Rights Reserved