这篇文章给你们分享的是有关linux怎么查询文件的内容。小编感觉挺实用的,因而分享给你们做个参考,一起追随小编过来瞧瞧吧。
linux查询文件的命令:1、locate,用于查找符合条件的文件,句型“locate[选择参数][式样]”;2、find,拿来在指定目录下查找文件,句型“find[OPTioN]…[查找路径][查找条件][处理动作]”。
本教程操作环境:linux5.9.8系统、DellG3笔记本。
linux查询文件的常用命令有两个:
locate
locate让使用者可以很快速的搜救档案系统内是否有指定的档案。其方式是先构建一个包括系统内所有档案名称及路径的数据库,然后当找寻时就只需查询这个数据库,而毋须实际深入档案系统之中了。在通常的distribution之中linux vi命令,数据库的构建都被置于crontab中手动执行。
1.命令格式:
locate [选择参数] [样式]
2.命令功能:
locate命令可以在搜救数据库时快速找到档案,locate为模糊查找红旗linux,数据库由updatedb程序来更新,updatedb是由crondaemon周期性构建的,locate命令在搜救数据库时比由整个由硬碟资料来搜救资料来得快,但较差劲的是locate所找到的档案若是近来才完善或刚改名的linux 查看.img文件,可能会找不到,在内定值中,updatedb每晚会跑一次,可以由更改crontab来更新设定值。(etc/crontab)
locate指定用在搜救符合条件的档案linux 查看.img文件,它会去储藏档案与目录名称的数据库内,locate查询文件时,会去搜索/var/lib/mlocate/mlocage.db,找寻合乎范本式样条件的档案或目录录,可以使用特殊字元(如”*”或”?”等)来指定范本款式,如指定范本为kcpa*ner,locate会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列举该目录下包括子目录在内的所有档案。
locate指令和find寻找档案的功能类似,但locate是透过update程序将硬碟中的所有档案和目录资料先构建一个索引数据库,在执行loacte时直接找该索引,查询速率会较快,索引数据库通常是由操作系统管理,但也可以直接下达update逼迫系统立刻更改索引数据库。
3.命令参数:
4.使用实例:
实例1:搜索etc目录下所有以sh开头的文件
[root@Centos7 ~#]locate /etc/sh /etc/shadow/etc/shadow-/etc/shells[root@centos7 ~#]locate -r "/etc/sh " # 正则,锚定词首/etc/shadow/etc/shadow-/etc/shells[root@centos7 ~#]
实例2:忽视大小写
[root@centos7 ~#]locate -i ~/d/root/Desktop/root/Documents/root/Downloads/root/d1/root/dd/var/lib/pcp/pmdas/root/domain.h[root@centos7 ~#]
实例3:更新数据库
[root@centos7 ~#]locate ~/a/root/anaconda-ks.cfg[root@centos7 ~#]updatedb[root@centos7 ~#]locate ~/a/root/a.sh/root/anaconda-ks.cfg[root@centos7 ~#]
find
1.主要用途:
find命令是一个实时查找工具,通过遍历指定路径而完成对文件的查找;在使用该命令时,假若不选取参数,则在当前目录下查找子目录与文件并显示之;另外,任何坐落参数之前的字符串,都将视为欲查找的目录名。因为是实时遍历查找,find有如下特点:精确实时查找,速率慢可能只搜索用户具备读取和执行权限的目录。
2.find句型:
3.查找条件:
4.处理动作:
find |xargs COMMAND
5.常用参数:
文件名和inode类:
属主属组类:
文件类型类:
逻辑组合条件类:
组合条件:
摩根定理:
文件大小类:
-size [+|-]#UNIT 常用单位:k,M,G #UNIT: (#-1,#] 如:5M 表示 (4M,5M]-#UNIT: [0,#-1] 如:-5M 表示 [0,5M]+#UNIT: (#,oo) 如:+5M 表示 (6M,oo)
关于文件大小类的解释:为何-size5M还是找精确的5M而是表示(4M,5M],试想文件的大小指哪些?是指文件数据的大小还是包括了元数据后的大小,那你找元数据的大小有意义吗?但文件的大小肯定是包含元数据大小的,而我们通常以文件大小找文件时常常考虑的是文件数据的大小;另外,精确查找一定大小的文件意义不大;所以这儿的大小会有1个单位的浮动。
时间戳类:
以”天”为单位: -atime [+|-]# #: [#,#+1) +#: [#+1,oo) -#: [0,#) -mtime -ctime以“分钟”为单位: -amin -mmin -cmin
关于时间戳类的解释:为何-atime3表示的是[3,4),这个就挺好解释了,我们这里所说的时间是指时间段而非时刻,一“天”与一“分钟”都是指一个时间段,只有[3,4)这个半闭半开的区间能够完整地表示第七天。
权限类:
-perm [/|-]MODE MODE: 精确匹配权限 /MODE: 任何一类(u,g,o)对象的权限中只要能一位匹配即可,属于或关系。以前用'+',CentOS 7以'/'替代之 -MODE: 每一类对象都必须同时拥有指定权限,属于与关系 0:表示不关注
示例:
6.使用示例:
实例1:将配置文件备份到指定目录下并添加扩充名.org
[root@localhost ~]# find . -name "*.conf" -exec cp -r {} /testdir/{}.org ; [root@localhost ~]# cd /testdir/[root@localhost testdir]# lsa.conf.org b.conf.org[root@localhost testdir]#
实例2:.提示删掉存在时间超过3天以上的属主为young的临时文件
[root@localhost ~]# find /tmp -ctime +3 -user young -exec rm -fr {} ;[root@localhost ~]#
实例3:在主目录中查找可被其它用户写入的文件
[root@localhost ~]# find ~ -perm -002/root/num[root@localhost ~]# find ~ -perm -002 -exec chmod o-w {} ;[root@localhost ~]# ll num--w--w---- 1 root root 35 Jan 21 05:55 num
实例4:查找/var目录下属主为root,且属组为mail的所有文件
[root@localhost ~]# find /var -user root -group mail -ls #默认关系就是与1179652 4 drwxrwxr-x 2 root mail 4096 Jan 23 11:04 /var/spool/mail
实例5:查找/var目录下不属于root、lp、gdm的所有文件
[root@localhost ~]# find /var ! -user root ! -user lp ! -user gdm
实例6:查找/var目录下近来一周内其内容更改过,同时属主不为root,也不是postfix的文件
[root@localhost ~]# find /var/ -mtime -7 ! -user root ! -user postfix -ls1179676 4 drwx------ 3 daemon daemon 4096 Jan 23 11:04 /var/spool/at524399 4 drwx------ 2 Nginx nginx 4096 Jan 23 03:16 /var/log/nginx524413 0 -rw-r--r-- 1 nginx root 0 Jan 23 03:16 /var/log/nginx/access.log524391 0 -rw-r--r-- 1 nginx root 0 Jan 21 03:44 /var/log/nginx/error.log132174 4 drwx------ 3 nginx nginx 4096 Jan 21 03:44 /var/lib/nginx132175 4 drwx------ 7 nginx nginx 4096 Jan 21 03:44 /var/lib/nginx/tmp132173 4 drwx------ 2 nginx root 4096 Jan 21 03:44 /var/lib/nginx/tmp/client_body132219 4 drwx------ 2 nginx root 4096 Jan 21 03:44 /var/lib/nginx/tmp/proxy132221 4 drwx------ 2 nginx root 4096 Jan 21 03:44 /var/lib/nginx/tmp/uwsgi132222 4 drwx------ 2 nginx root 4096 Jan 21 03:44 /var/lib/nginx/tmp/scgi132220 4 drwx------ 2 nginx root 4096 Jan 21 03:44 /var/lib/nginx/tmp/fastcgi
实例7:查找当前系统上没有属主或属组,且近来一个周内曾被访问过的文件
[root@bash ~]# find / -nouser -o -nogroup -a -atime -7
实例8:查找/etc目录下小于1M且类型为普通文件的所有文件
[root@bash ~]# find /etc/ -size +1M -type f/etc/selinux/targeted/policy/policy.29/etc/udev/hwdb.bin
实例9:查找/etc目录下所有用户都没有写权限的文件
[root@bash ~]# find /etc/ ! -perm /222/etc/pki/ca-trust/extracted/java/cacerts/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem/etc/lvm/profile/cache-MQ.profile/etc/lvm/profile/cache-smq.profile/etc/lvm/profile/command_profile_template.profile/etc/lvm/profile/metadata_profile_template.profile/etc/lvm/profile/thin-generic.profile/etc/lvm/profile/thin-perfORMance.profile/etc/openldap/certs/passWord/etc/gshadow/etc/dbus-1/system.d/cups.conf/etc/shadow/etc/gshadow-/etc/ld.so.conf.d/kernel-3.10.0-327.el7.x86_64.conf/etc/shadow-/etc/udev/hwdb.bin/etc/Machine-id/etc/pam.d/cups/etc/sudoers
实例10:查找/etc目录下起码有一类用户没有执行权限的文件
[root@bash ~]# find /etc/ ! -perm -111 # 至少有一类用户没有就是所有用户都没有
实例11:.查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件
[root@bash ~]# find /etc/init.d -perm -113/etc/init.d
或则
[root@bash ~]# find /etc/init.d -perm -111 -perm -002/etc/init.d
实例12:摩根定理找出/tmp目录下,属主不是root,且文件名不以f开头的文件
[root@centos7 ~]#find /tmp ( -not -user root -a -not -name 'f*' ) -ls
即
[root@centos7 ~]#find /tmp -not ( -user root -o -name 'f*' ) -ls
实例13:查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
[root@bash ~]# find /etc -path '/etc/sane.d' -prune -o -name '*.conf'
实例14:匹配文件路径或文件
[root@bash ~]# find /usr/ -path '*local'/usr/bin/abrt-action-analyze-ccpp-local/usr/share/doc/postfix-2.10.1/examples/qmail-local/usr/share/aclocal/usr/libexec/postfix/local/usr/local
实例15:基于正则表达式匹配文件路径
[root@bash ~]# find . -regex ".*txt$" ./.mozilla/firefox/4dqu966q.default/revocations.txt./vimrc/spf13-vim/LICENSE.txt./a.txt
谢谢诸位的阅读!关于“linux怎么查询文件”这篇文章就分享到这儿了,希望以上内容可以对你们有一定的帮助,让你们可以学到更多知识,假如认为文章不错,可以把它分享出去让更多的人听到吧!