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-


本文转自 gm100861 51CTO博客,原文链接:http://blog.51cto.com/gm100861/788831
相关文章
|
29天前
|
Linux
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
90 2
|
1月前
|
存储 监控 安全
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
|
2天前
|
Linux
linux中查看某个文件夹下文件的个数和大小
这篇文章介绍了在Linux系统中使用各种命令(如`stat`、`wc`、`du`和`ls`)来查看文件夹下文件的个数和大小的方法。
18 4
linux中查看某个文件夹下文件的个数和大小
|
30天前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
31 1
Linux 服务器下载百度网盘文件
|
1月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
23天前
|
Ubuntu Linux Shell
Linux系统命令 安装和文件相关命令
本文档详细介绍了Linux系统中的常用命令,包括软件安装卸载命令如`dpkg`和`apt-get`,压缩与解压命令如`gzip`、`bzip2`和`xz`,以及`tar`命令用于打包和解包。此外还介绍了文件分割命令`split`,文件操作命令如`cat`、`head`、`tail`、`more`、`less`等,管道命令和`wc`、`grep`、`find`、`cut`、`sort`、`uniq`、`diff`等实用工具。最后,文档还讲解了文件属性相关的命令如`chmod`、`chown`、`chgrp`以及创建硬链接和软链接的`ln`命令。
|
1月前
|
Linux
linux 删除乱码文件名的文件
【8月更文挑战第26天】当遇到文件名显示为乱码,导致无法正常通过键盘输入文件名进行删除操作时,可以利用鼠标的复制功能配合`rm`命令实现删除。对于文件夹的删除,可使用`rm -rf 目录名`。然而,有时这种方式仍无法删除某些特殊乱码文件,这时可以通过获取文件的i节点号(使用`ls -i`或`ll -i`命令查看)并执行`find -inum [节点号] -delete`来进行删除。这种方法特别适用于处理那些因文件名问题而难以删除的情况。
80 2
|
1月前
|
JSON Linux 网络安全
【Azure 应用服务】如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?
【Azure 应用服务】如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?
|
1月前
|
机器学习/深度学习 Ubuntu Linux
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
|
1月前
|
监控 安全 Linux
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?