zoukankan      html  css  js  c++  java
  • linux下怎么查找文件

    linux下通常用whereis或者是locate来检查文件,如果实在找不到,才使用find。为什么find不能作为优先考虑的命令?

    因为whereis与locate是利用数据库来查找数据,所以相当快速,而且并没有实际查询硬盘,比较省时间。

    whereis [-bmsu] 文件或目录名
    
    -b :只找二进制格式的文件
    -m :只找在说明文件manual路径下的文件
    -s :只找source源文件
    -u :查找不在上述三个选项中的其他特殊文件

    find是很强大的命令,但是花费的时间很多,因为find是直接查找硬盘。

    而whereis和locate快速是因为linux系统将系统内的所有文件都记录在一个数据库文件里面,这两个命令会以此数据库文件的内容为准,因此,有时你还会发现使用这两个执行文件时会找到已删除的文件,而找不到新创建的文件。

    locate [-ir] keyword
    
    -i :忽略大小写的差异
    -r :后面可接正则表达式的显示方式

    数据库的创建默认是每天执行一次,所以当你新建文件后查找该文件时,locate会告诉你找不到,我们可以更新数据库。使用updatedb命令。

    updatedb命令回去读取/etc/updatedb.conf这个配置文件,并更新/var/lib/mlocate内的数据库文件

    find [PATH] [option] [action]
    
    参数:
    1.与事件有关的参数:共有 -atime -ctime -mtime
    -mtime n : n为数字,意义为在n天之前的"一天之内"被更改过的文件;
    -mtime +n:列出n天前(不包含n天本身)被更改过的文件名;
    -mtime -n:列出n天之内(包含n天本身)被更改过的文件名;
    -newer file :file为一个存在的文件,列出比file还要新的文件名
    范例:
    find / -mtime 0
    0代表当前时间,所以从现在开始的24小时前,有改动过内容的文件都会被列出来。
    若要求列出3天前的24小时内改动的文件呢
    find / -mtime 3
    find /etc -newer /etc/passwd
    -newer用来分辨两个文件之间的新旧关系
    2.find命令-与用户或用户组有关的参数
    
    -uid n:n为数字,UID,
    -gid n:n为数字,GID,
    -user name:name为用户账号名称
    -group name:name为用户组名
    -nouser :寻找文件的所有者不存在/etc/passwd的人
    -nogroup:寻找文件的所有用户组不存在于/etc/group中的文件
    当你自行安装软件时,很可能该软件的属性当中并没有文件所有者,此时可以用上面两个参数进行查找
    除了当你自行由网络上面下载文件时会发生之外,如果你将系统里面某个账号删除了,但是该账号已经在系统内创建很多文件时,就很可能会发生无主灵魂的文件存在。也可以使用上面两条命令。
    3.find命令-与文件权限及名称有关的参数
    
    -name filename:查找文件名为filename的文件
    -size [+-]SIZE:查找比SIZE还要大(+)或小(-)的文件,这个SIZE的规格有:c代表byte,k代表1024bytes .
    找比50KB还要大的文件,就是"-size +50k"
    -type TYPE:查找文件的类型为TYPE的,类型主要有:一般正规文件(f)、设备文件(b,c),目录(d),连接文件(l),socket(s),以及FIFO(p)属性
    -perm mode:查找文件权限"刚好等于"mode的文件,这个mode为类似的chmod的属性值,举例来说,-rwsr-xr-x的属性为4755
    -perm -mode :查找文件权"必须要全部包含mode的权限"的文件,举例来说,我们查找权限为0744 的文件时,4755的文件也会被查找出来
    -perm +mode :查找文件时,"包含任一mode的权限"的文件,举例来说,我们查找0755时,0600的文件也会被查找出来
    4.find命令-其他可行的操作
    -exec command : command为其他命令,-exec后面可接其他命令来处理查找的结果
    
    -print : 将结果打印到屏幕上,此操作默认
    范例说明:
    find / -perm +7000 -exec ls -l {} ;
    该范例中{}代表"由find找到的内容"
    -exec 一直到;是关键词,这中间的 ls -l {} 是额外的命令
    因为;在bash环境下有特殊意义,所以此处用反斜杠转义
  • 相关阅读:
    python读写hdf5及cdf格式文件
    常用python shell
    opencv的使用——经典大坑
    opencv python实用操作
    opencv python基本操作
    opencv c++实用操作
    opencv c++基本操作
    opencv安装
    [HNOI2005]星际贸易
    [2017SEERC]Divide and Conquer
  • 原文地址:https://www.cnblogs.com/ddddemo/p/5853272.html
Copyright © 2011-2022 走看看