linux系统中find命令怎么linux查找文件的命令大文件

你的位置: >
> Linux系统文件查找locate和find命令工具使用
讲到Linux的文件查找,首先大家一般在Windows中有过查找过文件,我们知道window是以文件名结尾来识别文件的,使用一些通配符*.doc,*.txt来检索一类文件,缩小范围,实现快速定位文件,在Linux中,也有文件查找的需要不过实现的方式将更加灵活;
1)locate工具&
2)find工具
Linux中也有像window中那样模糊匹配的查找方式,那就是locate工具下面来详细介绍
& (1)工作原理:
& & &locate查找文件不是对当前文件系统遍历查找,而是在locate自己的数据库locateDB中查找,根据系统负载状况,只需要在某个特定的时间点来遍历整个文件系统,把所有遍历的文件名放到自己的数据库中,这样在使用locate工具查找时只需要检索自己的数据库文件,速度是非常快的,但是又会带来一下几个问题;
& & & &a:数据库更新时需要遍历整个系统,然后记录在locateDB中,遍历整个系统时,需要消耗大量的系统资源;所以系统一般只在特定的时间自动更新,也可以手动;
& & & &b:locate在自己的数据库文件中检索,不用在系统中检索,查找速度是非常快的;
& & & &c:系统中的文件操作是很频繁的,创建移动复制删除一个文件后,要想查找,对于这些最近更新的文件,是没办法准确定位的,因为locate工具检索的是自己的数据库文件,locateDB数据库文件只在特定的时间更新,所以很难实现实时查找;
& & & &d:locate工具查找文件时只能对文件名进行globe通配匹配条件,没办法根据文件的其它属性针对查找,也就是说很难实现文件的精确匹配查找;
& (2)locate命令工具使用:
& & & & 命令:locate
& locate [option]…pattern…
& & & & -i:ignore-case
-d:locateDB directory
-n #:只显示前#个匹配查找到的文件;
-c:统计查找到的文件个数;
& &(2)locateDB数据库文件在系统中的位置:
& & & & /var/lib/mlocate/mlocate.db
[root@xia7&~]#&ll&/var/lib/mlocate/mlocate.db&
-rw-r-----&1&root&slocate&3223706&Aug&16&09:12&/var/lib/mlocate/mlocate.db
[root@xia7&~]#
& &(3).如何手动更新locatdb?&
& & & & updatedb
[root@xia7&~]#&updatedb&
[root@xia7&~]#
& & 前面所说的locate工具虽然速度检索快,但是不能实现实时查找和特定文件属性查找,Linux系统中还有一款强
大的查找工具find,能够完成更多的高级查找条件,实现准确定位文件;
& &(1)find工作原理:
& find工具可以指定特定路径和查找条件,对指定路径下所有路径根据查找条件完整遍历,查找完以后还能做相应的处理动作;工具功能非常强大;简述特性如下:
& & & &a:find是对指定路径下完整遍历,默认不指定是当前目录,因为查找的是系统路径,所以是实时查找;
& & & &b:由于查找的路径是系统完整路径,尤其是文件系统很大时,查找起来系统负载压力会很大,同时查找速度相对于locate的数据库文件查找有点慢;
& & & &c:find的查找条件很多可以基于正则表达式以及其他文件属性,权限,大小,时间戳,属主属组,文件类型作为匹配查找条件,这样就能对文件实现精确定位查找;
& & & &b:而且对查找到的文件还能多相应的处理动作,一般默认是print,还能多其他很多对文件操作的处理命令;这样对文件的处理能力得到进一步加强;
& &(2)find命令工具使用:
& & & & 命令:find&
& & & & 语法:
& & & & & & find [option]…[查找路径] &[查找条件] [处理动作]
& & & & 常用选项:
& & & & & & -P:查找的文件如果是链接文件,将查找软链接文件指向的位置;
查找路径:
& &不写默认从当前路径向下查找
可以指定路径
查找条件:
a:根据文件名和inode查找:
& & & & & & & & -name filename :根据文件名查找;
-iname filename :查找文件名时忽略大小写;
-inum inode:根据inode号查找;
-regex &pattern& :根据模式匹配查找文件;
[root@xia7&~]#&find&/etc&-name&passwd
/etc/passwd
/etc/pam.d/passwd
[root@xia7&~]#&find&/etc&-iname&SHADOW
/etc/shadow
[root@xia7&~]#&ll&-i&/etc/passwd
&-rw-r--r--&1&root&root&2069&Aug&15&10:23&/etc/passwd
[root@xia7&~]#&find&/&-inum&
/etc/passwd
[root@xia7&~]#&
[root@xia7&~]#&find&/&-regex&&.*passwd$&
/usr/bin/lppasswd
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/smbpasswd
/usr/bin/vncpasswd
/usr/bin/kdepasswd
/usr/sbin/lpasswd
/usr/sbin/chpasswd
b:根据属主属组查找:
-user username:根据属主查找文件;
-group groupname:根据属组查找文件;
-uid userid:根据用户uid查找文件;
-gid usergid:根据用户gid查找文件;
-nouser:查找没有属主的文件;
-nogroup:查找没有属组的文件;
[root@xia7&~]#&find&/home&-user&xia
/home/xia/.mozilla
/home/xia/.mozilla/extensions
/home/xia/.mozilla/plugins
/home/xia/.bash_logout
/home/xia/.bash_profile
[root@xia7&~]#&
[root@xia7&~]#&find&/home&-group&xiashixiang
/home/xiashixiang
/home/xiashixiang/.mozilla
/home/xiashixiang/.mozilla/extensions
/home/xiashixiang/.mozilla/plugins
[root@xia7&~]#&find&/home/&-uid&1000
/home/mageedu
/home/mageedu/.mozilla
/home/mageedu/.mozilla/extensions
/home/mageedu/.mozilla/plugins
[root@xia7&~]#&userdel&xiashixiang
[root@xia7&~]#&find&/home&-nouser&
/home/xiashixiang
/home/xiashixiang/.mozilla/plugins
/home/xiashixiang/.bash_logout
/home/xiashixiang/.bash_profile
/home/xiashixiang/.bashrc
[root@xia7&~]#&ll&/home/xiashixiang/.bashrc&
-rw-r--r--&1&1&Nov&20&&2015&/home/xiashixiang/.bashrc
[root@xia7&~]#
c:根据文件类型查找:
-type f:查找文件类型为普通文件;
-type d:查找文件类型为目录文件;
-type l:查找文件类型为软连接文件;
-type b:查找文件类型为块设备文件;
-type c:查找文件类型为字符设备文件;
-type s:查找文件类型为套接字文件;
-type p:查找文件类型为管道文件;
[root@xia7&~]#&find&/home&-type&d
/home/mageedu
/home/mageedu/.mozilla
[root@xia7&~]#&find&/run/&-type&s
/run/abrt/abrt.socket
/run/NetworkManager/private
/run/gssproxy.sock
/run/systemd/notify
[root@xia7&~]#&ll&/run/systemd/notify&
srwxrwxrwx&1&root&root&0&Aug&16&&2016&/run/systemd/notify
[root@xia7&~]#&
[root@xia7&~]#&find&/&-type&p
/run/dmeventd-client
/run/dmeventd-server
[root@xia7&~]#&ll&/run/dmeventd-client&
prw-------&1&root&root&0&Aug&16&15:48&/run/dmeventd-client
[root@xia7&~]#
d:根据文件大小查找文件:
-size [+|-]#[k|M|G]
-size 5k :表示查找文件大小4k-5k之间的所有文件;
-size -5k :表示查找文件大小为4k以下的文件;
-size +5k :表示查找文件大小为5k以上的所有文件;
[root@xia7&dir]#&ll&-h&/dir/
-rw-r--r--&2&root&root&&&15&Aug&16&15:57&ceshi
-rw-r--r--&2&root&root&&&15&Aug&16&15:57&ceshi_hlink
-rw-r--r--&1&root&root&2.0M&Aug&16&16:20&file2
-rw-r--r--&1&root&root&3.0M&Aug&16&16:21&file3
-rw-r--r--&1&root&root&4.0M&Aug&16&16:21&file4
-rw-r--r--&1&root&root&5.0M&Aug&16&16:21&file5
-rw-r--r--&1&root&root&6.0M&Aug&16&16:21&file6
-rw-r--r--&1&root&root&7.0M&Aug&16&16:22&file7
[root@xia7&dir]#&find&/dir/&-size&4M
/dir/file4
[root@xia7&dir]#&find&/dir/&-size&+4M
/dir/file5
/dir/file6
/dir/file7
[root@xia7&dir]#&find&/dir/&-size&-4M
/dir/ceshi
/dir/ceshi_hlink
/dir/file2
/dir/file3
[root@xia7&dir]#
e:根据文件的时间戳查找文件:
&-atime -mtime -ctiem :以天为单位24小时;
&-amin -mmin -cmin :表示以分钟为单位;
&-atime [+|-]#
&-atime 5 :表示查找的文件访问时间为5-6天之内的文件;
&-atime +5 :表示查找的文件访问时间为6天以上的文件;
&-atime -5 :表示查找的文件访问时间为5天以内的文件;
&其他时间表示的区间用法一样;
[root@xia7&dir]#&find&/&-atime&3
find:&‘/proc/1558/task/1558/fd/6’:&No&such&file&or&directory
find:&‘/proc/1558/task/1558/fdinfo/6’:&No&such&file&or&directory
find:&‘/proc/1558/fd/6’:&No&such&file&or&directory
find:&‘/proc/1558/fdinfo/6’:&No&such&file&or&directory
/usr/bin/kill
/usr/share/man/man1/sort.1.gz
/usr/share/man/man1p/sort.1p.gz
/usr/share/man/man3/sort.3pm.gz
/etc/systemd/journald.conf
/var/log/messages-
/var/log/cron-
/var/log/maillog-
/var/log/secure-
/var/log/spooler-
/var/spool/abrt/ccpp--05:17:40-3996/not-reportable
[root@xia7&dir]#&stat&/usr/bin/kill
&&File:&‘/usr/bin/kill’
&&Size:&29264&&&&& Blocks:&64&&&&&&&&&IO&Block:&4096&&&regular&file
Device:&803h/2051d Inode:&588838&&&&&&Links:&1
Access:&(0755/-rwxr-xr-x)&&Uid:&(&&&&0/&&&&root)&&&Gid:&(&&&&0/&&&&root)
Access:&&11:34:01.&+0800
Modify:&&20:37:48.&+0800
Change:&&01:45:05.&+0800
[root@xia7&dir]#&date
Tue&Aug&16&16:30:15&CST&2016
[root@xia7&dir]#&
[root@xia7&dir]#&find&/etc/init.d/&-atime&-3
/etc/init.d/
/etc/init.d/functions
/etc/init.d/network
[root@xia7&dir]#&stat&/etc/init.d/network&
&&File:&‘/etc/init.d/network’
&&Size:&6630&&&&&& Blocks:&16&&&&&&&&&IO&Block:&4096&&&regular&file
Device:&802h/2050d Inode:&7807&&&&&&&&Links:&1
Access:&(0755/-rwxr-xr-x)&&Uid:&(&&&&0/&&&&root)&&&Gid:&(&&&&0/&&&&root)
Access:&&19:25:33.&+0800
Modify:&&19:51:07.&+0800
Change:&&01:45:13.&+0800
[root@xia7&dir]#&date
Tue&Aug&16&16:33:17&CST&2016
[root@xia7&dir]#&
[root@xia7&dir]#&find&/etc/init.d/&-atime&+7
/etc/init.d/README
/etc/init.d/netconsole
[root@xia7&dir]#&stat&/etc/init.d/netconsole&
&&File:&‘/etc/init.d/netconsole’
&&Size:&2989&&&&&& Blocks:&8&&&&&&&&&&IO&Block:&4096&&&regular&file
Device:&802h/2050d Inode:&7806&&&&&&&&Links:&1
Access:&(0755/-rwxr-xr-x)&&Uid:&(&&&&0/&&&&root)&&&Gid:&(&&&&0/&&&&root)
Access:&&02:56:47.&+0800
Modify:&&19:51:07.&+0800
Change:&&01:45:13.&+0800
[root@xia7&dir]#&date&
Tue&Aug&16&16:35:11&CST&2016
[root@xia7&dir]#
f:根据权限查找文件:
& -perm[/|-] mode&
& -perm 644 :查找权限为644的文件,精确查找;
& -perm -444 :查找每组权限只要有读权限的文件;
& -perm /222 :查找每组权限只要有一组权限是写权限的文件;
& -perm -020 :表示查找属组有写权限的文件,0表示忽略权限位;
[root@xia7&dir]#&find&/home&-perm&644
/home/mageedu/.bash_logout
/home/mageedu/.bash_profile
/home/mageedu/.bashrc
/home/xia/.bash_logout
/home/xia/.bash_profile
/home/xia/.bashrc
/home/xiashixiang/.bash_logout
/home/xiashixiang/.bash_profile
/home/xiashixiang/.bashrc
[root@xia7&dir]#&ll&/home/xiashixiang/.bashrc&
-rw-r--r--&1&1&Nov&20&&2015&/home/xiashixiang/.bashrc
[root@xia7&dir]#&
[root@xia7&dir]#&find&/tmp&-perm&-222
/tmp/.X11-unix
/tmp/.font-unix
/tmp/.ICE-unix
/tmp/.Test-unix
/tmp/.XIM-unix
/tmp/systemd-private-6ca5fb894d61414da9daecbef334b022-cups.service-q0ZQQD/tmp
[root@xia7&dir]#&ll&/tmp/.font-unix&-d
drwxrwxrwt.&2&root&root&6&Jul&28&01:45&/tmp/.font-unix
[root@xia7&dir]#&
[root@xia7&dir]#&ll
total&27656
-rw-r--r--&2&root&root&&&&&&15&Aug&16&15:57&ceshi
-rw-r--r--&2&root&root&&&&&&15&Aug&16&15:57&ceshi_hlink
-rw-r--r--&1&root&root&2097152&Aug&16&16:20&file2
-r-xrwxr-x&1&xia&&xia&&3145728&Aug&16&16:21&file3
-rw-r--r--&1&root&root&4194304&Aug&16&16:21&file4
-rw-r--r--&1&root&root&5242880&Aug&16&16:21&file5
-rw-r--r--&1&root&root&6291456&Aug&16&16:21&file6
-rw-r--r--&1&root&root&7340032&Aug&16&16:22&file7
[root@xia7&dir]#&su&-&xia
Last&login:&Tue&Aug&16&16:55:09&CST&2016&on&pts/0
[xia@xia7&~]$&find&/dir&-perm&/111
/dir/file3
[xia@xia7&~]$
g:组合查找条件:
& &与:-a :并且的关系,条件之间可以省略;
或:-o :条件之间是或者的关系;
非:-not,!:对条件取反;
根据多个相同条件之间可以使用德.摩根定律,这样对后面的动作处理对象有个明确的范围;
非( A -a B ) = (非A) -o (非B)
非( A -o B ) = (非A) -a (非B)
root@xia7&dir]#&find&/home/&-type&d&-a&-nouser
/home/xiashixiang
/home/xiashixiang/.mozilla
/home/xiashixiang/.mozilla/extensions
/home/xiashixiang/.mozilla/plugins
[root@xia7&dir]#&ll&/home/xiashixiang/&-d
drwx------&3&&Aug&15&10:23&/home/xiashixiang/
[root@xia7&dir]#
h:处理动作:
& &-print:这是默认的处理动作。显示到
-ls :相当于于执行ls -l 命令查看匹配到的文件详细信息;
-delete:对查找的文件删除,注意:动作很危险,在工作中谨慎使用,避免误操作;
-fls file:对查找的文件ls -l的详细输出保存到指定文件中;
& & & & & &&
& & & & & & -ok COMMAND {} \;对查找到的文件,每个文件都执行CMMMAND命令,后面的{}花括号表示引用查找
& & & & & & & & 到的文件自身;“\;“表示特定固定格式;-ok,表示对每条执行都进行确认问答,直接
& & & & & & & & 回车表示忽略;
& & & & & & -exce COMMAND {} \; -exce:表示忽略全部执行前的确认,直接执行命令;
& & & & & &&
find | xargs COMMAND – :命令一般对参数会有限制,这时超过限制参数量,命令会报错,为了避免报错,
& & & & & & & & 可以使用xargs命令,把查找到的结果,全部通过管道传递给xargs命令,在做相应的操作命令;
[root@xia7&dir]#&find&/home/&-type&d&-a&-nouser&-ls
&28066&&&&0&drwx------&&&3&1002&&&&&1002&&&&&&&&&&&74&Aug&15&10:23&/home/xiashixiang
&&&&0&drwxr-xr-x&&&4&1002&&&&&1002&&&&&&&&&&&37&Jul&28&01:43&/home/xiashixiang/.mozilla
&&&&0&drwxr-xr-x&&&2&1002&&&&&1002&&&&&&&&&&&&6&Jun&10&&2014&/home/xiashixiang/.mozilla/extensions
&&&&0&drwxr-xr-x&&&2&1002&&&&&1002&&&&&&&&&&&&6&Jun&10&&2014&/home/xiashixiang/.mozilla/plugins
[root@xia7&dir]#
& & & & & & & & & &
& & & & & &
& & & & & &
& & & & &&
转载请注明: &
与本文相关的文章Linux 教程
Linux find命令
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
参数说明 :
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去 n 天过读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去 n 天过修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
-pid n : process id 是 n 的文件
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
exp1 -or exp2
exp1, exp2
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
# find . -ctime -20
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
$ find . -type f -perm 644 -exec ls -l { } ;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
$ find / -type f -size 0 -exec ls -l { } ;
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;
反馈内容(*必填)
截图标记颜色
联系方式(邮箱)
联系邮箱:
投稿页面:
记住登录状态
重复输入密码工具显示源文件修订记录反向链接最近更改媒体管理器网站地图登录&
京东优惠券
linux:find-latest-edit
Linux系统下用find命令查找最近修改过的文件
Linux的终端上,没有windows的搜索那样好用的图形界面工具,但find命令确是很强大的。
比如按名字查找一个文件,可以用 find / -name targetfilename 。 唉,如果只知道名字,不知道地点,这样也不失为一个野蛮有效的方法。
按时间查找也有参数 -atime 访问时间 -ctime 改变状态的时间 -mtime修改的时间。但要注意,这里的时间是以24小时为单位的。
查看man手册后使用,你会很迷惑: -mtime n: Files data was last modified n*24 hours ago. 字面上的理解是最后一次修改发生在n个24小时以前的文件,但实际上
find ./ -mtime 0:返回最近24小时内修改过的文件。
find ./ -mtime 1 : 返回的是前48~24小时修改过的文件。而不是48小时以内修改过的文件。
那怎么返回10天内修改过的文件?find还可以支持表达式关系运算,所以可以把最近几天的数据一天天的加起来:
find ./ -mtime 0 -o -mtime 1 -o -mtime 2 ……虽然比较土,但也算是个方法了。
还有没有更好的方法,我也想知道。
另外, -mmin参数-cmin / - amin也是类似的。
Find应用实例
查找最近30分钟修改的当前目录下的.php文件
find . -name '*.php' -mmin -30
查找最近24小时修改的当前目录下的.php文件
find . -name '*.php' -mtime 0
查找最近24小时修改的当前目录下的.php文件,并列出详细信息
find . -name '*.inc' -mtime 0 -ls
查找当前目录下,最近24-48小时修改过的常规文件。
find . -type f -mtime 1
查找当前目录下,最近1天前修改过的常规文件。
find . -type f -mtime +1Linux搜索或查找超过指定大小的文件?-linux-操作系统-壹聚教程网Linux搜索或查找超过指定大小的文件?
本文章给各位同学介绍一个Linux搜索或查找超过指定大小的文件脚本命令吧,希望些教程 对各位朋友有帮助呀。
查找超过 10MB 的文件
find . -type f -size +10000k -exec ls -lh {} ; | awk &{ print $9 &: & $5 }&
find 路径 -size +2000k -print
这样可以将指定路径内,大于2000K的文件全部打印出来(小于用减号),根据需要筛选,提升速度和带宽。如果你想加上一个时间,可以在后面写 -and -mtime -1 ,表示一天24小时内有变化的文件。
下的find命令用来查找文件,通过man find就知道它是无所不能的。所以按照文件大小来查找文件就不在话下。从man find搜索size,可以看到如下信息:
-size n[cwbkMG]
&& File uses n units of space.& The following suffixes can be used:
&& b&&& for 512-byte blocks (this is the default if no suffix is used)
&& c&&& for bytes
&& w&&& for two-byte s
&& k&&& for Kilobytes (units of 1024 bytes)
&& M&&& for Megabytes (units of 1048576 bytes)
&& G&&& for Gigabytes (units of
注意:默认单位是b,而它代表的是512字节,所以2表示1K,1M则是2048,如果不想自己转换,可以使用其他单位,如c、K、M等。
例子:查找当前目录下文件大小为2048(2k)字节的文件
find ./ -size 4
find ./ -size 2048c
find ./ -size 2K上述查找文件是等于指定大小的,那能不能查询大于或小于某个指定值的文件呢,答案是肯定,例如:
查找大于2K的文件,+ 表示大于
find ./ -size +2048c
查找小于2K的文件,- 表示小于
find ./ -size +2048c -type f
上一页: &&&&&下一页:相关内容}

我要回帖

更多关于 linux命令行查找文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信