Linux如何搜索文件的方法
在Linux上查某个文件是一件比较麻烦的事情。毕竟在Linux中需要我们使用专用的“查”命令来寻在硬盘上的文件。
Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式
那么方便查,在WINDOWS中,只要知道要查的文件的文件名或者后缀就非常容易
查到。Linux中查文件的命令通常为“find”命令,“find”命令能帮助我们在使用,
管理Linux的日常事务中方便的查出我们需要的文件。对于Linux新手来说,“find”
命令也是了解和学习Linux文件特点的方法。因为Linux发行版本繁多,版本升级很快,
在Linux书籍上往往写明某个配置文件的所在位置,往往Linux新手按图索骥还是不能
到。比如说REDHAT Linux 7.O和REDHAT Linux 7.1中有些重要的配置文件所在的硬
盘位置和文件目录就有了很大的改变,如果不学会使用“find”命令,那么在成千上万
的Linux文件中要到其中的一个配置文件是相当困难的,笔者在没有精通“find”命
令之前就吃过这样的苦头。好,下面就详细为大家介绍强大的“find”命令的全部使用
方法和用途。
Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式
那么方便查,在WINDOWS中,只要知道要查的文件的文件名或者后缀就非常容易
查到。Linux中查文件的命令通常为“find”命令,“find”命令能帮助我们在使用,
管理Linux的日常事务中方便的查出我们需要的文件。对于Linux新手来说,“find”
命令也是了解和学习Linux文件特点的方法。因为Linux发行版本繁多,版本升级很快,
在Linux书籍上往往写明某个配置文件的所在位置,往往Linux新手按图索骥还是不能
到。比如说REDHAT Linux 7.O和REDHAT Linux 7.1中有些重要的配置文件所在的硬
盘位置和文件目录就有了很大的改变,如果不学会使用“find”命令,那么在成千上万
的Linux文件中要到其中的一个配置文件是相当困难的,笔者在没有精通“find”命
令之前就吃过这样的苦头。好,下面就详细为大家介绍强大的“find”命令的全部使用
方法和用途。
通过文件名查法:
这个方法说起来就和在WINDOWS下查文件一样容易理解了。如果你把这个文件放在
单个的文件夹里面,只要使用常见的“ls"命令就能方便的查出来,那么使用“find”
命令来查它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如
果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的
文件夹里。举例说明,假设你忘记了f这个文件在系统的哪个目录下,甚至
在系统的某个地方也不知道,则这是可以使用如下命令:
find / -f
这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求
系统按照文件名查,最后写上f这个目标文件名即可。稍等一会系统会
在计算机屏幕上显示出查结果列表:
这个方法说起来就和在WINDOWS下查文件一样容易理解了。如果你把这个文件放在
单个的文件夹里面,只要使用常见的“ls"命令就能方便的查出来,那么使用“find”
命令来查它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如
果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的
文件夹里。举例说明,假设你忘记了f这个文件在系统的哪个目录下,甚至
在系统的某个地方也不知道,则这是可以使用如下命令:
find / -f
这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求
系统按照文件名查,最后写上f这个目标文件名即可。稍等一会系统会
在计算机屏幕上显示出查结果列表:
etc/httpd/f
这就是f这个文件在Linux系统中的完整路径。查成功。
如果输入以上查命令后系统并没有显示出结果,那么不要以为系统没有执行
find/ -f命令,而可能是你的系统中没有安装Apache服务器,这时
只要你安装了Apache Web服务器,然后再使用find / -f就能到这
个配置文件了。
无错误查技巧:
在Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理
员的专利。但是普通用户使用“find”命令时也有可能遇到这样的问题,那就是Linux系
统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有
权限用“find”命令来查询这些目录或者文件。当普通用户使用“find”命令来查询这些
这就是f这个文件在Linux系统中的完整路径。查成功。
如果输入以上查命令后系统并没有显示出结果,那么不要以为系统没有执行
find/ -f命令,而可能是你的系统中没有安装Apache服务器,这时
只要你安装了Apache Web服务器,然后再使用find / -f就能到这
个配置文件了。
无错误查技巧:
在Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理
员的专利。但是普通用户使用“find”命令时也有可能遇到这样的问题,那就是Linux系
统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有
权限用“find”命令来查询这些目录或者文件。当普通用户使用“find”命令来查询这些
文件目录是,往往会出现"Permissiondenied."(禁止访问)字样。系统将无法查询到
你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查
文件,输入
find / -name access_log 2>/dev/null
这个方法是把查错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误
的信息就直接输送到stderrstream 2 中,access_log 2就是表明系统将把错误信息输
送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这
样查询到的错误信息将被转移了,不会再显示了。
在Linux系统查文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中
查某个文件就要花费相当长的一段时间,特别是大型Linux系统和容量较大的硬盘,
文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,
那么只要在这个目录中往下就能节省很多时间了。使用find /etc -f
就可以解决这个问题。上面的命令就是表示在etc目录中查询f这个文件。
你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查
文件,输入
find / -name access_log 2>/dev/null
这个方法是把查错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误
的信息就直接输送到stderrstream 2 中,access_log 2就是表明系统将把错误信息输
送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这
样查询到的错误信息将被转移了,不会再显示了。
在Linux系统查文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中
查某个文件就要花费相当长的一段时间,特别是大型Linux系统和容量较大的硬盘,
文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,
那么只要在这个目录中往下就能节省很多时间了。使用find /etc -f
就可以解决这个问题。上面的命令就是表示在etc目录中查询f这个文件。
这里再说明一下“/ ”这个函数符号的含义,如果输入 “find/ ”就是表示要求Linux系
统在整个ROOT目录下查文件,也就是在整个硬盘上查文件,而“find/etc”就是只
在 etc目录下查文件。因为“find/etc”表示只在etc目录下查文件,所以查的
速度就相应要快很多了。
根据部分文件名查方法:
这个方法和在WINDOWS中查已知的文件名方法是一样的。不过在Linux中根据部分文
件名查文件的方法要比在WINDOWS中的同类查方法要强大得多。例如我们知道某个
文件包含有srm这3个字母,那么要到系统中所有包含有这3个字母的文件是可以实现
的,输入:
find /etc -name '*srm*'
统在整个ROOT目录下查文件,也就是在整个硬盘上查文件,而“find/etc”就是只
在 etc目录下查文件。因为“find/etc”表示只在etc目录下查文件,所以查的
速度就相应要快很多了。
根据部分文件名查方法:
这个方法和在WINDOWS中查已知的文件名方法是一样的。不过在Linux中根据部分文
件名查文件的方法要比在WINDOWS中的同类查方法要强大得多。例如我们知道某个
文件包含有srm这3个字母,那么要到系统中所有包含有这3个字母的文件是可以实现
的,输入:
find /etc -name '*srm*'
这个命令表明了Linux系统将在/etc整个目录中查所有的包含有srm这3个字母的文件,
比如 absrmyz, tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件
是由srm 这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:
find/etc -name 'srm*'
这是只有像srmyz 这样的文件才被查出来,象absrmyz或者 absrm这样的文件都不符
合要求,不被显示,这样查文件的效率和可靠性就大大增强了。
根据文件的特征查询方法:
如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查出来,这和
WINDOWS系统中的"搜索"功能是基本相同的。在微软的"搜索"中WINDOWS中的"搜索助理"
使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在
比如 absrmyz, tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件
是由srm 这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:
find/etc -name 'srm*'
这是只有像srmyz 这样的文件才被查出来,象absrmyz或者 absrm这样的文件都不符
合要求,不被显示,这样查文件的效率和可靠性就大大增强了。
根据文件的特征查询方法:
如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查出来,这和
WINDOWS系统中的"搜索"功能是基本相同的。在微软的"搜索"中WINDOWS中的"搜索助理"
使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在
Internet 上搜索更加容易。"搜索助理"还包括一个索引服务,该服务维护了计算机中
所有文件的索引,使得搜索速度更快。使用"搜索助理"时,用户可以指定多个搜索标准。
例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文
本的文件。如果用户正使用 Active Directory,这时还可以搜索带有特定名称或位置的
打印机。
例如我们知道一个Linux文件大小为1,500 bytes,那么我们可是使用如下命令来查询
find / -size 1500c,字符 c 表明这个要查的文件的大小是以bytes为单位。如果
我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查方式来解决。
例如我们输入find/ -size +10000000c 这个命令,则标明我们指定系统在根目录中查
出大于10000000字节的文件并显示出来。命令中的“+”是表示要求系统只列出大于指定
大小的文件,而使用“-”则表示要求系统列出小于指定大小的文件。下面的列表就是在
Linux使用不同“ find"命令后系统所要作出的查动作,从中我们很容易看出在Linux
中使用“find"命令的方式是很多的,“ find"命令查文件只要灵活应用,丝毫不必在
WINDOWS中查能力差。
所有文件的索引,使得搜索速度更快。使用"搜索助理"时,用户可以指定多个搜索标准。
例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文
本的文件。如果用户正使用 Active Directory,这时还可以搜索带有特定名称或位置的
打印机。
例如我们知道一个Linux文件大小为1,500 bytes,那么我们可是使用如下命令来查询
find / -size 1500c,字符 c 表明这个要查的文件的大小是以bytes为单位。如果
我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查方式来解决。
例如我们输入find/ -size +10000000c 这个命令,则标明我们指定系统在根目录中查
出大于10000000字节的文件并显示出来。命令中的“+”是表示要求系统只列出大于指定
大小的文件,而使用“-”则表示要求系统列出小于指定大小的文件。下面的列表就是在
Linux使用不同“ find"命令后系统所要作出的查动作,从中我们很容易看出在Linux
中使用“find"命令的方式是很多的,“ find"命令查文件只要灵活应用,丝毫不必在
WINDOWS中查能力差。
find / -amin -10 # 查在系统中最后10分钟访问的文件
find / -atime -2 # 查在系统中最后48小时访问的文件
find / -empty # 查在系统中为空的文件或者文件夹
find / -group cat # 查在系统中属于 groupcat的文件
find / -mmin -5 # 查在系统中最后5分钟里修改过的文件
find / -mtime -1 #查在系统中最后24小时里修改过的文件
find / -nouser #查在系统中属于作废用户的文件
find / -user fred #查在系统中属于FRED这个用户的文件
下面的列表就是对find命令所可以指定文件的特征进行查的部分条件。在这里并没有
列举所有的查条件,参考有关Linux有关书籍可以知道所有find命令的查函数。
-amin n
查系统中最后N分钟访问的文件
-atime n
查系统中最后n*24小时访问的文件
-cmin n
查系统中最后N分钟被改变状态的文件
-ctime n
查系统中最后n*24小时被改变状态的文件
-empty
查系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
-false
查系统中总是错误的文件
-fstype type
查系统中存在于指定文件系统的文件,例如:ext2 .
-gid n
查系统中文件数字组 ID 为 n的文件
-group gname
查系统中最后n*24小时访问的文件
-cmin n
查系统中最后N分钟被改变状态的文件
-ctime n
查系统中最后n*24小时被改变状态的文件
-empty
查系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
-false
查系统中总是错误的文件
-fstype type
查系统中存在于指定文件系统的文件,例如:ext2 .
-gid n
查系统中文件数字组 ID 为 n的文件
-group gname
查系统中文件属于gnam文件组,并且指定组和ID的文件
Find命令的控制选项说明:
Find命令也提供给用户一些特有的选项来控制查操作。下表就是我们总结出的
最基本,最常用的find命令的控制选项及其用法。
选项
用途描述
-daystart
.测试系统从今天开始24小时以内的文件,用法类似-amin
-depth
使用深度级别的查过程方式,在某层指定目录中优先查文件内容
-follow
遵循通配符链接方式查; 另外,也可忽略通配符链接方式查询
-help
Find命令的控制选项说明:
Find命令也提供给用户一些特有的选项来控制查操作。下表就是我们总结出的
最基本,最常用的find命令的控制选项及其用法。
选项
用途描述
-daystart
.测试系统从今天开始24小时以内的文件,用法类似-amin
-depth
使用深度级别的查过程方式,在某层指定目录中优先查文件内容
-follow
遵循通配符链接方式查; 另外,也可忽略通配符链接方式查询
-help
显示命令摘要
-maxdepth levels
在某个层次的目录中按照递减方法查
-mount
不在文件系统目录中查, 用法类似 -xdev.
-noleaf
禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查
-version
打印版本数字
使用-follow选项后,find命令则遵循通配符链接方式进行查,除非你指定这个选项,
否则一般情况下find命令将忽略通配符链接方式进行文件查。
-maxdepth选项的作用就是限制find命令在目录中按照递减方式查文件的时候搜索文
-maxdepth levels
在某个层次的目录中按照递减方法查
-mount
不在文件系统目录中查, 用法类似 -xdev.
-noleaf
禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查
-version
打印版本数字
使用-follow选项后,find命令则遵循通配符链接方式进行查,除非你指定这个选项,
否则一般情况下find命令将忽略通配符链接方式进行文件查。
-maxdepth选项的作用就是限制find命令在目录中按照递减方式查文件的时候搜索文
件超过某个级别或者搜索过多的目录,这样导致查速度变慢,查花费的时间过多。
例如,我们要在当前(.)目录技巧子目录中查一个名叫fred的文件,我们可以使用如
下命令
find . -maxdepth 2 -name fred
假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查
很容易成功。假如,这个文件在./sub1/sub2/fred目录中,那么这个命令就无法查
到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查2层目录下的
文件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个
文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查
成功。
使用混合查方式查文件
例如,我们要在当前(.)目录技巧子目录中查一个名叫fred的文件,我们可以使用如
下命令
find . -maxdepth 2 -name fred
假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查
很容易成功。假如,这个文件在./sub1/sub2/fred目录中,那么这个命令就无法查
到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查2层目录下的
文件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个
文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查
成功。
使用混合查方式查文件
find命令可以使用混合查的方法,例如我们想在/tmp目录中查大于100000000字
节并且在48linux命令查看文件夹大小小时内修改的某个文件,我们可以使用-and 来把两个查选项链接起来
组合成一个混合的查方式。
find /tmp -size +10000000c -and -mtime +2
学习过计算机语言的朋友都知道,在计算机语言里,使用and ,or 分别表示“与”和“或”
的关系。在Linux系统的查命令中一样通用。
还有这样的例子,
find / -user fred -or -user george
我们可以解释为在/tmp目录中查属于fred或者george这两个用户的文件。
节并且在48linux命令查看文件夹大小小时内修改的某个文件,我们可以使用-and 来把两个查选项链接起来
组合成一个混合的查方式。
find /tmp -size +10000000c -and -mtime +2
学习过计算机语言的朋友都知道,在计算机语言里,使用and ,or 分别表示“与”和“或”
的关系。在Linux系统的查命令中一样通用。
还有这样的例子,
find / -user fred -or -user george
我们可以解释为在/tmp目录中查属于fred或者george这两个用户的文件。
在find命令中还可以使用“非”的关系来查文件,如果我们要在/tmp目录中查所有
不属于panda的文件,使用一个简单的
find /tmp ! -user panda
命令就可以解决了。很简单。
查并显示文件的方法
查到某个文件是我们的目的,我们更想知道查到的文件的详细信息和属性,如果
我们采取现查文件,在使用LS命令来查看文件信息是相当繁琐的,现在我们也可以
把这两个命令结合起来使用。
find / -name "f" -ls
不属于panda的文件,使用一个简单的
find /tmp ! -user panda
命令就可以解决了。很简单。
查并显示文件的方法
查到某个文件是我们的目的,我们更想知道查到的文件的详细信息和属性,如果
我们采取现查文件,在使用LS命令来查看文件信息是相当繁琐的,现在我们也可以
把这两个命令结合起来使用。
find / -name "f" -ls
系统查到f文件后立即在屏幕上显示f文件信息。
12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/f
下面的表格就是一些常用的查文件并显示文件信息的参数和使用方法
选项
用途描述
-exec command;
查并执行命令
-fprint file
打印文件完整文件名
-fprint0 file
打印文件完整文件名包括空的文件
-fprintf file format
12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/f
下面的表格就是一些常用的查文件并显示文件信息的参数和使用方法
选项
用途描述
-exec command;
查并执行命令
-fprint file
打印文件完整文件名
-fprint0 file
打印文件完整文件名包括空的文件
-fprintf file format
打印文件格式
-ok command;
给用户命令执行操作,根据用户的Y 确认输入执行
-printf format
打印文件格式
-ls
打印同种文件格式的文件.
总结:到这里为止我们已经学习了这名多关于find命令的使用方法,也列出了很多常用的find命令的选项,如果我们能熟练掌握在Linux中find命令的使用方法,那么在Linux中查文件也不是一件困难的事情。
-ok command;
给用户命令执行操作,根据用户的Y 确认输入执行
-printf format
打印文件格式
-ls
打印同种文件格式的文件.
总结:到这里为止我们已经学习了这名多关于find命令的使用方法,也列出了很多常用的find命令的选项,如果我们能熟练掌握在Linux中find命令的使用方法,那么在Linux中查文件也不是一件困难的事情。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论