2023年7月26日发(作者:)
linux查找⼀个⽂件中abc字段命令,Linux查询命令整理(⽰例代码)在linux中,查找命令主要有find和grep,以及mlocate/locate区别:(1)find命令是根据⽂件的属性进⾏查找,如⽂件名,⽂件⼤⼩,所有者,所属组,是否为空,访问时间,修改时间等。(2)grep是根据⽂件的内容进⾏查找,会对⽂件的每⼀⾏按照给定的模式(patter)进⾏匹配查找。(3)mlocate(locate) 命令⽤来查找⽂件或⽬录,速度快。⼀、find命令find 是⽂件层次的查找(包括⼦⽬录,就是对当前路径树查找)基本格式:find path name1、按照⽂件名查找(1)find /opt -name #在/opt⽬录下查找⽂件(2)find /opt -name #在/opt⽬录下⽂件(3)find /opt -name ‘*abc*‘ #使⽤通配符*。表⽰在/opt⽬录下查找⽂件名中含有字符串‘abc’的⽂件(4)find / -name ‘abc*‘ #表⽰当前⽬录下查找⽂件名开头是字符串‘abc’的⽂件2、可指定⽂件类型查找find / -name "abc*" -type d # 查找类型为⽬录类型find / -name "abc*" -type f # 查找类型为⽂件类型-type tTrue if the file is of the specified type. Possible file typesare as follows:b block specialc character speciald directoryf regular filel symbolic linkp FIFOs socket3、控制⽬录查找深度-maxdepth numberfind / -name "abc*" -maxdepth 2 # 查找到⼆级⽬录4、按照⽂件特征查找时间:(1)find / -amin -10 # 查找在系统中最后10分钟访问的⽂件(access time)(2)find / -atime -1 # 查找在系统中最后24⼩时访问的⽂件(3)find / -mmin -10 # 查找在系统中最后10分钟⾥修改过的⽂件(modify time)(4)find / -mtime -2 #查找在系统中最后48⼩时⾥修改过的⽂件补充:history 10 #表⽰查看系统最后使⽤的10条命令⼤⼩:(1)find / -size +100M #查找出⼤于100M字节的⽂件(c:字节,w:双字,k:KB,M:MB,G:GB)(2)find / -size -100M #查找出⼩于100M的⽂件其他:(1)find / -empty # 查找为空的⽂件/夹(2)find / -user ljw #查找属于⽤户是ljw的⽂件/夹(3)find / -group ljw # 查找group(组)为ljw的⽂件/夹5.使⽤混合查找⽅式查找⽂件参数有: !,-and(-a),-or(-o)(1) find /opt -size +100M -and -mtime +10 #在/opt⽬录下查找⼤于100M并在最后10分钟内修改的⽂件(2) find / -user ljw -or -user ljw1 #在/⽬录下查找多个⽤户是ljw或者ljw1的⽂件⽂件(3) find /opt ! -user ljw #在/opt⽬录中查找所有不属于⽤户ljw的⽂件⼆、grep 命令基本格式:grep 字符串 路径1、主要参数[options]主要参数:-c:只输出匹配⾏的计数。-i:不区分⼤⼩写-h:查询多⽂件时不显⽰⽂件名。-l:查询多⽂件时只输出包含匹配字符的⽂件名。-n:显⽰匹配⾏及⾏号。-s:不显⽰不存在或⽆匹配⽂本的错误信息。-v:显⽰不包含匹配⽂本的所有⾏。2、grep -r "字符串"(1)grep ‘test‘ d* #显⽰所有以d开头的⽂件中包含 test的⾏(2)grep ‘test’ aa bb cc #显⽰在aa,bb,cc⽂件中包含test的⾏(3)grep ‘[a-z]{5}’ aa #显⽰所有包含每⾏字符串⾄少有5个连续⼩写字符的字符串的⾏(4)grep magic /usr/src #显⽰/usr/src⽬录下的⽂件(不含⼦⽬录)包含magic的⾏(5)grep -r magic /usr/src #显⽰/usr/src⽬录下的⽂件(包含⼦⽬录)包含magic的⾏(6)grep -w pattern files :只匹配整个单词,⽽不是字符串的⼀部分(如匹配’magic’,⽽不是’magical’),3、grep 可以结合其他命令使⽤,效果也很好例如利⽤通道‘|’查找⽂件grep -Rl ‘name‘ /opt # 查找⽂件内容。其中查找的字符串,可不写引号‘‘。递归查找⽂件,在路径/opt下(包括⼦⽬录),找出⽂件内容中含有字符串‘找我‘的⽂件。显⽰为路径和⽂件名。1. find | grep name# 查找⽬录查找出当前⽬录和⼦⽬录的⽂件名中含有name的⽂件即find查找出当前⽬录和⼦⽬录下的⽂件名,利⽤管道 | 交给grep过滤出含有name的那⼏⾏,间接查找出⽂件。其中find和grep可字⾏添加所需参数2. find | xargs grep name # 查找⽂件内容查找出当前⽬录和⼦⽬录的⽂件内容中含有name的⾏与 xargs 结合,可以传递各种选项来调整你的输出,并删除找到的那些⽂件。3. ll | grep luoluo # 查找⽂件类似find | grep luoluo,只是不能递归查找⼦⽬录下的⽂件名 -qa | grep ‘软件名‘ #查找安装的软件三、mlocate/locate ⽂件查找对于⽂件数量庞⼤的时候,可以使⽤此⽅法查找mlocate和locate 命令⼀样,下⾯就不再写locate了。⾄于mlocate和locate的关系,最后⾯会具体说⼀下。locate命令其实是“find -name”的另⼀种写法,但是要⽐后者快得多。Linux系统⾃动创建这个数据库,并且每天⾃动更新⼀次,所以使⽤locate命令查不到最新变动过的⽂件。为了避免这种情况,可以在使⽤locate之前,先使⽤updatedb命令,⼿动更新数据库。1、使⽤命令mlocate #直接搜索⽂件mlocate ~/m # 搜索⽤户主⽬录下,所有以m开头的⽂件。mlocate /etc/abc # 搜索etc⽬录下所有以abc开头的⽂件。mlocate -ie #如果 已经删除了,使⽤-e会检查⽂件是否真实存在,⽽不必updatedb,-i,忽略⼤⼩写。mlocate /etc/*abc #在/etc中查找含有字符串abc的⽂件。2、准备⼯作先安装mlocate/locate⼯具命令,创建数据库(创建索引),然后更新数据库。安装⼯具命令:yum install mlocateyum install updatedbupdatedb #updatedb更新数据库,即⽂件库。3、整个locate/mlocate⼯作其实是由四部分组成的:/usr/bin/updatedb #主要⽤来更新数据库,可通过crontab⾃动完成的/usr/bin/locate #查询⽂件位置的程序(查询时是改程序运⾏,进⾏查找),也可能是mlocate。/etc/ #updatedb的配置⽂件,⽤来配置数据库中要放⼊或排除哪些⽬录和⽂件等/var/lib/mlocate/ #存放⽂件信息的⽂件,⽂件名和对于的⽬录。4、mlocate默认不搜索的⽂件:即写⼊updatedb的配置⽂件/etc/的⽂件。PRUNE_BIND_MOUNTS="yes"PRUNEFS="ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf"PRUNENAMES=".git .bzr .hg .svn"PRUNEPATHS="/afs /tmp /var/spool /media"解释:第⼀⾏ "yes":是否进⾏限制搜索。第⼆⾏ 排除检索的⽂件系统类型。第三⾏ 排除检索的后缀⽂件。第四⾏ 排除检索的路径,且对路径下的⼦⽂件夹也不检索。5、关于mlocate和locate:mlocate有⼀个近亲:slocate,它安全地( s 代表安全)记录了相关的⽂件权限,以防⽌⾮特权⽤户看到特权⽂件。此外,还有它们所起源的⼀个更⽼的,原始 locate 命令。mlocate与locate和slocate的不同之处在于,在每次扫描⽂件系统,更新数据库时,mlocate 不需要持续重新扫描所有的⽂件系统。mlocate 在数据库中保存了时间戳信息,⽆需重新读取,就能判断⽬录内容是否改变。所以更新的速度更快,对硬盘的占⽤也更少。这是mlocate特有的功能。相反,它将其发现的⽂件(m代表合并)与现有的⽂件列表合并在⼀起,使其可以借助系统缓存从⽽性能更⾼、更轻量级。由于mlocate流⾏,所以也简称其为 locate。mlocate和locate命令的⼀个关键组件,名为 updatedb,更新数据库的命令。updatedb 通过cron任务定期运⾏,通常在⼀天中的安静时间运⾏。在⽂件 /etc// 的内部(该⽂件的路径及其内容可能因发⾏版⽽不同)。每天如何触发 “updatedb” 命令。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690361191a337805.html
评论列表(0条)