当前位置: 首页 > Linux

linux中文件搜索的常用命令

时间:2023-04-06 02:40:58 Linux

文件搜索小编在学这门课之前打了半个晚上,第二天上课的时候发呆,所以把文件搜索这一章搁置了很久鸽子。以下是观看视频时所做的笔记。如有理解上的偏差,请留言。本文只有3条命令,重点是find。时间有限的朋友只能看find命令了。这太重要了。whereis命令在一些特定的目录中搜索,搜索二进制文件、帮助文件、源文件等。Options:不带任何选项,将列出所有文件。-B只搜索二进制文件-m只搜索帮助文件-S只搜索源文件-l列出whereis搜索的路径,即whereis会搜索这些路径下的内容-U不是上面其他类型的文件三种类型的文件。locate命令是一个快速查找文件的工具,它是根据索引数据库进行查找的。数据路径位置/var/lib/mlocate/mlocate.db1.新系统可能没有这个数据库。updatedb命令可以手动更新数据库2.updatedb命令会消耗大量IO,需要在系统不忙的时候更新3.updatedb命令根据/etc/updatedb.conf的设置,文件名在硬盘中将被搜索并保存在/var/lib/mlocate目录下的数据库中。定位命令默认为搜索全路径-ccount-n#只显示前几条搜索结果-S显示Locate数据库信息备注:Locate不能指定文件搜索路径。要指定搜索路径,您需要使用正则表达式规范。它不是实时搜索,而是模糊搜索。默认情况下,locate将搜索文件的完整路径,而不仅仅是文件名。意思是如果目录中包含某个关键字,则搜索该目录下的所有文件。locate只会搜索当前用户访问的目录,也就是说,如果用户没有访问目录的权限,则不会搜索该目录示例说明:指定搜索路径{*\.sh"/data/scripts/foot.sh/data/scripts/adddedscription.sh/data/scripts/arg.sh/data/scripts/arg2.sh/scripsnum.sh/data/scripts/scripsback_etc.sh/data/scripts/bim.sh.sh/data/scripts/checkdisk.sh/data/scripts/checkint.sh/data/criptser.sh/data/df_warning.sh}查找}查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找FIND}查找}查找}查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找-查找查找FIND}查找,查找栏富文件,只搜索有权限的目录find[OPTIONS][FindPath][FindConditions][ProcessingAction]_默认是递归搜索,默认是搜索当前目录searchdirectory搜索到什么级别-mindepth#最小搜索深度,-depth或-d一般是先搜索文件夹,再搜索文件夹中的文件。如果加上这个选项-d,则先搜索文件,再搜索搜索目录条件:按文件名搜索-name文件名  按文件名搜索,精确匹配代替模糊搜索。支持通配符如果您想模糊地搜索,则可以使用“*filename*”,建议在使用通配符时添加双引号,否则不会有莫名其妙的问题,-inuminode 根据InodeNode编号搜索,可以用于搜索硬链接链接数是#这个条件搜索-Regex"Pattern"用pattern匹配整个文件路径,而不是根据属性信息搜索文件名。用户名根据属主搜索-group组名。所有者的文件-组名的名称搜索-UIDUID搜索-GIDGID搜索根据UID搜索根据GID。搜索文件类型。所有文件类型为普通文件的文件查找所有文件类型为管道文件的文件s在文件类型的文件类型中查找所有文件C的文件类型。文件类型的所有文件B查找文件类型的文件类型的所有文件l查找文件类型的文件类型的所有文件查找所有文件或目录文件或文件夹组合条件-aandand默认为根据和条件搜索多个条件-ooror-not|!优先级,()需要转义,写成\(\)德摩根定律:(notA)or(notB)=not(AandB)(notA)and(notB)=not(AorB))排除特定目录搜索-path排除文件夹路径-a-prune-o-namefilename指定不搜索那些文件夹"\)-a-prune-o-name"*.conf"   #在除/proc和/sys目录之外的所有路径中搜索以.conf结尾的文件   find/\(-path"/sys"-o-path"/proc"\)-a-prune-o-name"*.conf"按文件大小搜索-size[+|-]#UNIT常用单位KmgC(byte)注意大小写6K表示(5K,6K],包括6K不包括5K-6K表示[0K,6-1k],包括0K也包括5K,两者之间+6Kindication(6K,OO),不包括6K-size1024K和-size1m之间的区别-Size1024K搜索从1023K到1024K的文件-Size1M将搜索从时间戳到-Artime[+|-]#+10表示11天前的文件-1表示最后一天的文件10代表10天到11天,-mtime[+|-]#-Ctime[+|-]#-mmin[+||-]#表示搜索-AMIN[+|-]#-Cmin[+|-]#基于权限搜索-Perm[/|-]mod模式:精准权限匹配/模式任意分类(Ugo)objects任意一个对象(Ugo)对象。在一个权限(rwx)中,只要能匹配到一个权限就可以被搜索到,是一个or关系。-MODE表示在任意类型的权限(ugo)对象,rwx的??三个条件都满足,是and关系。如果MODE中三种类型的对象之一为0,则表示该类型的对象是否有权限无关紧要。755filesfind-perm/222  只要任何类型的用户有写权限就会匹配或者至少一类用户有写权限就会匹配find-perm/111  只要任何类型的用户有写权限权限将匹配。也就是说,如果至少一类用户有执行权限,就会匹配find-perm/666  只要任何一类用户有读写权限,都会匹配。find-perm/001  其他用户有执行权限的文件将匹配find-perm/002  其他用户有写权限的文件将匹配find-perm-222  只有文件的所有者,组,其他用户有写权限匹配find-perm-002  只要其他人有写权限,就会匹配,find-perm/002和find-perm-022效果一样  如果您所属的组和其他组都具有写权限空间作为分隔符,它将匹配。可以使用pring0选项,使用nul作为分隔符-ls-ls-ls-ls>/PATH/TO/FILE-delete删除搜索到的文件,太危险,慎用-okCOMMAND{}\;将找到的每个文件提交给COMMAND指定的命令执行,但执行前会询问交互式问题——execCOMMAND{}\;在super中找到的每个文件都会按照COMMAND指定的命令执行,没有交互问题直接执行。{}指的是find查找到的文件,可以认为是一个变量。\;提交给COMMAND执行必须有\;endfind/data-exerm{}\删除搜索到的文件find/var-size+10M-mtime+10-okmv{}/dataput\inVAR将搜索到的大于10M且超过10天的文件移动到数据目录找到/data-name"*.txt"-execcp{}{}.bak\;批量添加后缀。注意double{}的使用Tips:使用find和mv批量添加后缀:;"复制代码")[root@CentOS7tmp]#lltotal0-rw-r--r--1rootroot0May305:40a\-rw-r--r--1rootroot0May305:40b\-rw-rw-rw-1rootroot0May305:40c\-rw-r--r--1rootroot0May305:40d\-rw-r--r--1rootroot0May305:40e\-r--------1rootroot0May305:40f\-rw-r--r--1rootroot0May305:40g\[root@CentOS7tmp\]#找到.-typef-execmv{}{}.haha\\;#Tips结合find和mv批量添加后缀\[root@CentOS7tmp\]#lltotal0-rw-r--r--1rootroot0May305:40a.haha\-rw-r--r--1rootroot0May305:40b.haha\-rw-rw-rw-1rootroot0May305:40c.haha\-rw-r--r--1root根05月3日05:40d。哈哈\-rw-r--r--1rootroot0May305:40e.哈哈\-r--------1rootroot0May305:40f.haha\-rw-r--r--1rootroot0May305:40g.haha\[root@CentOS7tmp\]#;《复制代码》)练习:1.为root找到/var目录的属主,并且属于组为邮件的所有文件或目录;find/var-userroot-a-groupmail-ls2、查找/usr目录下所有不属于root、bin或hadoop的文件或目录;使用两种方法;find/usr-not\(-userroot-o-userbin-o-userhadoop\)-lsfind/user-not-userroot-a-not-userbin-a-not-userhadoop-ls3.查找/etc目录下的文件或目录,其内容在上周被修改过,且所有者不是root用户或hadoop用户;find/etc-mtime-7-a-not-userroot-a-not-userhadoop-lsfind/etc-mtime-7-a-not\(-userroot-o-userhadoop\)-ls4.查找在当前系统上没有所有者或组并且在上周或目录中被访问过的文件;find\(-nouser-o-nogroup\)-a-atime-7-ls5、查找/etc目录下所有大于1M的普通文件类型的文件;find/etc/-size+1M-a-typef-ls6、在/etc目录下查找所有用户都没有写权限的文件;find/etc-not-perm/222-typef-ls7、在/etc目录下查找至少有一类用户没有执行权限的文件;find/etc-not-perm-111-typef-ls8、查找/etc/init.d/目录下所有用户有执行权限,其他用户有写权限的文件;找到/etc/init.dd-perm-113-typef-ls