Linux如何搜索文件的方法
#whereis 查找已经安装的软件
在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”命令的全部使用
方法和用途。
通过文件名查找法:
这个方法说起来就和在WINDOWS下查找文件一样容易理解了。如果你把这个文件放在
单个的文件夹里面,只要使用常见的“ls"命令就能方便的查找出来,那么使用“find”
命令来查找它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如
果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的
文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至
在系统的某个地方也不知道,则这是可以使用如下命令:
#find / -name httpd.conf
这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求
系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会
在计算机屏幕上显示出查找结果列表:
etc/httpd/conf/httpd.conf
这就是httpd.conf这个文件在Linux系统中的完整路径。查找成功。
如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行
find/ -name httpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时
只要你安装了Apache Web服务器,然后再使用find / -name httpd.conf就能找到这
个配置文件了。
无错误查找技巧:
在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 -name httpd.conf
就可以解决这个问题。上面的命令就是表示在etc目录中查询httpd.conf这个文件。
这里再说明一下“/ ”这个函数符号的含义,如果输入 “find/ ”就是表示要求Linux系
统在整个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中的"搜索助理"
使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在
Internet 上搜索更加容易。"搜索助理"还包括一个索引服务,该服务维护了计算机中
所有文件的索引,使得搜索速度更快。使用"搜索助理"时,用户可以指定多个搜索标准。
例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文
本的文件。如果用户正使用 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
查找系统中文件属于gnam文件组,并且指定组和ID的文件
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命令在目录中按照递减方式查找文件的时候搜索文
件超过某个级别或者搜索过多的目录,这样导致查找速度变慢,查找花费的时间过多。
例如,我们要在当前(.)目录技巧子目录中查找一个名叫fred的文件,我们可以使用如
下命令
find . -maxdepth 2 -name fred
假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查找
很容易成功。假如,这个文件在./sub1/sub2/fred目录中,那么这个命令就无法查找
到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查找2层目录下的
文件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个
文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查找
成功。
使用混合查找方式查找文件
find命令可以使用混合查找的方法,例如我们想在/tmp目录中查找大于100000000字
节并且在48小时内修改的某个文件,我们可以使用-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 "httpd.conf" -ls
系统查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息。
12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf
下面的表格就是一些常用的查找文件并显示文件信息的参数和使用方法
选项
用途描述
-exec command;
查找并执行命令
-fprint file
打印文件完整文件名
-fprint0 file
打印文件完整文件名包括空的文件
-fprintf file format
打印文件格式
-ok command;
给用户命令执行操作,根据用户的Y 确认输入执行
-printf format
打印文件格式
-ls
打印同种文件格式的文件.
总结:到这里为止我们已经学习了这名多关于find命令的使用方法,也列出了很多常用的find命令的选项,如果我们能熟练掌握在Linux中find命令的使用方法,那么在Linux中查找文件也不是一件困难的事情。
相关文章:

python socket编程
python 编写server的步骤:1.第一步是创建socket对象。调用socket构造函数。如:socket socket.socket( family, type )family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的…

AI 语言模型真的是越大越好吗?这个模型优于 Gopher
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近年来对于 AI 语言模型的有一个争议就是 —— 越大越好。 DeepMind 正在质疑这个理由,并表示给 AI 一个记忆可以帮助与它 25倍大小的模型竞争。 去年 6 月,OpenAI 发布 GPT-3 模…

[20180412]订阅+镜像切换
订阅镜像切换 主数据库挂了之后,镜像数据库没挂,那么就需要把镜像数据库设置成主数据库。1.修改主机名,改成和主数据库一样的,重启2.修改数据库中的主机名IF SERVERPROPERTY(ServerName)<>SERVERNAMEBEGINDECLARE srvname s…
【Cocos2d开发】Cocos2d下安卓环境的搭建
在进行Cocos2d游戏开发前 我们先来配置一下环境,我们先来准备一下工具,我们所需要的工具分别为:1.Cocos2d引擎2.JDK3.SDK4.NDK5.ANT6.ADT1.下载Cocos2d-x引擎,目前最新版本为3.6,本教程的所有例子以3.4版本为例&#x…

Linux时间转化方法
Linux时间转化方法:(1)date -d"2008年 12月 17日 星期三 17:27:22 CST" "%s"该命令将2008年 12月 17日 星期三 17:27:22 CST转化为时间戳结果:1229515680(2)将时间戳1123495443 换算成可以识别的年月日分秒date -d 1970-01-01 UTC 1123495443 s…

有的放矢,远程操控中实时音视频的优化之道
5G远程操控场景,对实时音视频传输的时延、卡顿率和抗弱网等指标都有着非常高的要求,本文将会介绍如何结合5G网络特点,在实时音视频通信链路中进行联合优化,满足行业场景远控需求,降低画面时延。 在上一篇文章中&#x…

Quartz动态添加、修改和删除定时任务
2019独角兽企业重金招聘Python工程师标准>>> Quartz动态添加、修改和删除定时任务 转载于:https://my.oschina.net/haokevin/blog/1795161

Linux下运行run文件
必须到Linux下的终端,不能用远程命令 #chmod 755 文件名 #./文件名

第五届中国企业服务年会:洞见2022数智化的“光与火”
汇智聚能,一起点亮“高增长的下一步”。 在疫情防控与复工复产双重因素的带动下,企业数智化成为不确定环境中的确定项,“ABCD(人工智能、区块链、云计算、数据)X”引爆生产力、生产资料、生产关系和基础设施革命&#…

QTP连接oracle
2019独角兽企业重金招聘Python工程师标准>>> 首先,因为群里很多朋友说QTP连接oracle有点麻烦,我针对于连接oracle做一个完整的教程,希望需要学习的朋友都可以来看一下;具体方法如下: 1、无论是什么语言&am…

java子类对象和成员变量的隐写方法重写
1、子类继承的方法只能操作子类继承和隐藏的成员变量名字类新定义的方法可以操作子类继承和子类新生命的成员变量,但是无法操作子类隐藏的成员变量(需要适用super关键字操作子类隐藏的成员变量。) public class ChengYuanBianLing { publi…

Linux的cron和crontab定时任务
定时任务调用shell本地Windows写一个shell test.sh #!/bin/bashecho "Course Arrange Job runs well at: " date "%Y-%m-%d %H:%M:%S" >> /usr/www/wwwshell/www.txt 先在服务器执行看可不可以 注意需要 # dos2unix ./test.sh 再 # ./test.sh需要…

用AI创造可持续发展社会价值,第二届腾讯Light·公益创新挑战赛正式启动
12月23日,“创变者”2021年度腾讯Light论坛在厦门正式举办。在论坛上,由全国妇联宣传部指导,腾讯公司联合中国儿童中心主办,企鹅伴成长、腾讯华东总部、腾讯SSV创新办学实验室、企鹅爱地球、腾讯优图实验室、腾讯云AI、腾讯云微搭…

CSS3 @keyframes animate
2019独角兽企业重金招聘Python工程师标准>>> 1.keyframes定义和用法 通过 keyframes 规则,您能够创建动画。 创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式。 在动画过程中,您能够多次改变这套 CSS 样式。 以百分比来…

linux系统命令学习系列-文件和目录管理
复习上节内容:1. 定时执行任务命令crontab –e, crontab –l,crontab –r2. 作业:定义一个定时任务,每分钟向/tmp/test.txt文件输出hello worldcrontab –e*/1 * * * * echo ‘hello world’>>/tmp/test.txt本节我们来说一下文件和目录…

GPT-3再进化:通过浏览网页来提高事实准确率
作者 | OpenAI来源 | 数据实战派为了让 GPT-3 模型可以更准确地对开放式问题进行回答,研究人员使用了基于文本的网络浏览器对 GPT-3 进行微调。微调后的 WebGPT 模型可以对人类实时回答问题的方法进行学习,比如提交搜索、跟踪链接并上下滚动网页。研究人…

lamp-安装脚本-修订版2
#!/bin/bash #write by zhang_pc #at 2015.08.07 #apache2.4 php.5.4 mysql5.5 #脚本说明,如果脚本所在目录有源码包就用本地的,否则就从互联网下载APR_FILESapr-1.5.2.tar.gz APR_DIRapr-1.5.2 ARP_PRE/usr/local/apr APR_URLhttp://mirror.bit.edu.cn/…

Linux的rc.local自启动服务
linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。本文中假设inittab中设置的init tree为:/etc/rc.d/rc0.d/etc/rc.d/rc1.d/etc/rc.d/rc2.d/etc/rc.d/rc3.d/etc/rc.d/rc4.d/etc/rc.d/rc5.d/etc/rc.d/rc6.d/e…

[日常] Go语言圣经-函数递归习题
练习 5.1: 修改findlinks代码中遍历n.FirstChild链表的部分,将循环调用visit,改成递归调用。 练习 5.2: 编写函数,记录在HTML树中出现的同名元素的次数。 练习 5.3: 编写函数输出所有text结点的内容。注意不…

Centos下安装mysql 总结
一、MySQL安装 Centos下安装mysql 请点开:http://www.centoscn.com/CentosServer/sql/2013/0817/1285.html 二、MySQL的几个重要目录 MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录…

Linux下的Memcache安装(含libevent的安装)
Linux下Memcache服务器端的安装服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz另外,Memcache用到了libevent这个库用于Socket的处理,…

谷歌发布 RLDS,在强化学习生成、共享和使用数据集
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 大多数强化学习和序列决策算法都需要智能体与环境的大量交互生成训练数据,以获得最佳性能。这种方法效率很低,尤其是在很难做到这种交互的情况下,比如用真实的机器人…
浅谈 javascript 中的this绑定问题
javascript语言是在运行时前即进行编译的,而this的绑定也是在运行时进行绑定的。也就是说,this实际上是在函数被调用时候发生绑定的,它指向什么完全取决于函数在哪里被调用。1.默认绑定 例如直接在全局作用域下声明: var a2; console.log(this.a);在全局…

Centos用yum安装X Winodw
安装Centos 5.6系统的时候我没有先装任何组件,现在用X Window,需要再安装X Window,就可以启动图形界面了,但是默认的图形界面是很简陋的界面,可以根据需要再安装GNOME或KDE桌面环境安装X图形界面#可查询哪些组件是否已…

玩具javascript:cookie管理
2019独角兽企业重金招聘Python工程师标准>>> ;(function(window, undefined){var CookieUtil window.CookieUtil window.CookieUtil || {};var doc window.document;// 读取名称为name的Cookie信息CookieUtil.read function(name){// 暂无Cookieif(doc.cookie.l…

详解 Pandas 与 Lambda 结合进行高效数据分析
作者 | 俊欣来源 | 关于数据分析与可视化这篇文章小编来讲讲lambda方法以及它在pandas模块当中的运用,熟练掌握可以极大地提高数据分析与挖掘的效率导入模块与读取数据我们第一步需要导入模块以及数据集import pandas as pddf pd.read_csv("IMDB-Movie-Data.c…

前端工程师成长之多读好书
1 引言 乱七八糟的书看了很多,有一本讲JavaScript的印象特别深开篇说的是"JavaScript是Java的脚本语言",但还是看完了,最后忘了书名。 下面列的这些都是看过后至少记得起书名的,也有部分是经常看的书,一起列…

linux下配置vnc的方法
网上这样的文章很多了,好多前辈们都把自己的经验配置共享出来,受益匪浅,现在整理一下。 下面摘录的两篇文章各有侧重,结合起来可以配置的比较完善了。总结一下,只需要四步:step1 在当前linux系统用户us…

用 Python 画圣诞树的 N 种玩法
作者 | 写代码的明哥来源 | Pyhton编程时光马上就是圣诞节了,先提前祝大家圣诞快乐!今天来给大家分享一波如何使用 Python 来画一颗圣诞节树,包含多种版本,从平民版到豪华版,像极了一个程度员从入门到高级秃头程序员的…
ORM武器:NHibernate(三)五个步骤+简单对象CRUD+HQL
前面的两篇文章中。我们对NHibernate已经做了大致了解 《ORM利器:NHibernate(一)简单介绍》Nhibernate的作用:攻克了对象和数据库的转化问题 《ORM利器:NHibernate(二)使用CodeSmith高速生成映射…