Linux文件查找工具的探索
经过 Linux 系统不断探索,不断发展到现代文明,我们都必须坚信:一个典型的 Linux 系统是包含很多文件的,即是由文件组成的!那么新的问题就会涌现到我们的脑海中--“我们如何查找呢?”。当然,发展到现在的Linux 文件系统已经被良好地组织起来了。不过呢,海量的文件往往会引起一些可怕的问题。
作为一名LINUX运维人员,每天面对着这些 linux系统实际生产环境,必须有过硬的技术能力和良好的心理素质才能胜任。在今天这篇文章中,我们将介绍2个用来查找文件的工具。
命令locate, updatedb, find 和 xargs 都是 GNU 项目 findutils 软件包的一部分。这个GUN 项目提供了大量的在线文档,这些文档相当出色,如果你在高安全性的环境中使用这些程序,你应该读读相关文档。当然,在编写这篇文章过程中我还参考了《Linux就该这么学》这本书,内容很贴近实践,很有理论指导实践价值的一本书籍。
GNU 查找实用程序是 GNU 操作系统的基本目录搜索实用程序。这些程序通常与其他程序结合使用,以便向其他命令提供模块化和强大的目录搜索和文件定位功能。
此包随附的工具包括:
- Find -- search for files in a directory hierarchy
//在目录层次结构中搜索文件
- locate --list files in databases that match a pattern
//列出与模式匹配的数据库中的文件
- updatedb -- update a file name database
//更新文件名数据库
- xargs -- build and execute command lines from standard input
//从标准输入生成和执行命令行
find程序搜索目录树以查找文件或文件组。它遍历目录树并报告与用户规范匹配的文件的所有出现。find程序包括非常强大的搜索功能。
locate程序扫描一个或多个文件名数据库并显示任何匹配项。如果文件存在于上一个文件名数据库更新期间,这可用作非常快速的查找命令。
updatedb程序更新定位程序使用的文件名数据库。文件名数据库包含上次更新数据库时在特定目录树中的文件列表。这通常每晚由 cron 系统守护程序运行。
xargs 程序通过收集它在标准输入上读取的参数来生成和执行命令行。大多数情况下,这些参数是由 find 生成的文件名列表。
下面是一个示例操作,使子目录docs中的所有类HTML 文件由所有使用 find 和 xargs 的可读性。这是一个典型的示例,说明 Find 和 xarg 如何与其他实用程序一起使用,以提供强大的目录遍历功能。
[centos@linux ~]$ find docs -name '*.html' -print0 | xargs -0 chmod a+r
查找文件的简单方法-- locate
Locate命令会执行一次快速的路径名数据库搜索程序,同时输出每个与给定子字符串相匹配的路径名称。例如:我们想要找到“test/” 目录下所有以“zip”开头的程序名称。接下来,我们可以以这种方式使用 locate 命令,用来找到我们想要的文件:
[me@linux ~]$ locate test/zip
locate 命令将会搜索它的路径名数据库,输出任一个包含字符串“tset/zip”的路径名:
114/usr/test/zip
/usr/test/zipinfo
/usr/test/zipgrep
复杂点的话, locate 可以结合其它工具,比如说 grep 命令,来设计更加有趣的搜索方式:
[Centos@Linux ~]$ locate zip | grep test
/test/bunzip2
/test/bzip2
/test/gzip
/usr/test/unzip
/usr/test/unzipsfx
/usr/test/zip
/usr/test/zipgrep
/usr/test/zipinfo
查找文件的复杂方式--find
locate程序有一个缺陷是只能依据文件名来查找文件,而 find 程序支持基于各种各样的属性搜索一个给定目录或者它的子目录,来执行查找文件程序。本人建议要花费大量的时间去学习 find 命令,因为它有许多有趣的特性,很有意思的。
比较简单的应用方式中, find 命令可接收一个或多个目录名称来执行搜索程序。例如,输出我们的家目录的路径名列表:
[Centos@linux ~]$ find ~
对于一个比较活跃的用户帐号,这条命令将会产生一张很大的列表。避免查看不方便的现象,我们可以把这个列表通过管道符号输出到其它的程序中。例如:使用 wc 程序来计算出文件的数量:
[Centos@linux ~]$ find ~ | wc -l
10029
通过find 命令用来找到符合特定标准的文件,这就是它的魅力所在。
个人总结了些find命令选项,这些选项被用作配合find 命令限定一定的搜索范围。每当构建 find 表达式的时候,这些选型可能会被其它的测试条件和行为包含或者覆盖。常见选项的列表:
选型 |
描述 |
-depth |
指示 find 程序先处理目录中的文件,再处理目录自身。当指定-delete 行为时,会自动应用这个选项。 |
-maxdepth levels |
当执行测试条件和行为的时候,设置 find 程序陷入目录树的最大级别数 |
-mindepth levels |
在应用测试条件和行为之前,设置 find 程序陷入目录数的最小级别数。 |
-mount |
指示 find 程序不要搜索挂载到其它文件系统上的目录。 |
-noleaf |
指示 find 程序不要基于自己在搜索 Unix 的文件系统的假设,来优化它的搜索。在搜索 DOS/Windows 文件系统和CD/ROMS 的时候,我们需要这个选项 |
Linux文件查找工具的探索相关推荐
- Linux文件查找工具之find “大宝剑”--转载
原文地址:http://xinzong.blog.51cto.com/10018904/1749465 一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法 ...
- Linux文件查找工具之find “大宝剑”
一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这 ...
- linux文件查找工具,分享|Linux 中一种友好的 find 替代工具
fd 命令提供了一种简单直白的搜索 Linux 文件系统的方式. fd 是一个超快的,基于 Rust 的 Unix/Linux find 命令的替代品.它不提供所有 find 的强大功能.但是,它确实 ...
- linux 查找文件 locate,linux文件查找(find,locate)
文件查找: locate: 非实时,模糊匹配,查找是根据全系统文件数据库进行的: # updatedb, 手动生成文件数据库 速度快 find: 实时 精确 支持众多查找标准 遍历指定目录中的所有文件 ...
- Linux文件查找之find秘笈
前言 Linux的基本特点之一是一切皆文件,在系统管理过程中难免会需要查找特定类型的文件,那么问题 来了:如何进行有效且准确的查找呢?本文将对Linux系统中的文件查找工具及用法进行详细讲解. 常用工 ...
- linux的locate工具,linux文本查找工具之locate、find
linux文本查找工具之locate.find 一.文件查找分为两类: 1.非实时查找:locate 2.实时查找:find 二.非实时查找:locate 非实时查找:查找速度快.非精准查找.模糊查找 ...
- linux进入文件全文搜索命令,Linux 文件查找命令详解
大家好,我是"孤云幕雨":祝大家中秋快乐,今天给大家带来的是<Linux文件查找命令> 一.locate:依赖于事先构建的索引 v依赖于事先构建的索引:索引的构建是在系 ...
- Duplicate File Finder for Mac(重复文件查找工具)
Duplicate File Finder for Mac 破解版就能够帮助您将这些占用您空间的重复软件和文件删除了,Duplicate File Finder Mac版具有智能"拖放&qu ...
- Linux文件查找与tar包管理、企业级sed应用 软件包管理与编译安装httpd
总结 第7节 Linux文件查找与tar包管理.企业级sed应用 使用locate命令 使用find命令 压缩和解压缩工具 01-文件搜索 locate (00:02:30) locate test. ...
最新文章
- 收藏 | 10本免费的机器学习和数据科学书籍(附链接)
- 评价cnblogs.com的用户体验
- 那些生活中的应该知道的知识
- Spring-Data-JPA 动态查询黑科技
- Django(part47)--文件上传
- 禅道 11.4.1 版本发布,主要优化细节
- 毕设日志——配置服务器与测试gpu版本的tf faster rcnn代码
- 【论文笔记】命名实体识别论文
- java集合 线程安全
- Not enough space in file systems for the current software selection. An additional XXXX MiB is neede
- 概要设计 英文_JavaScript 中的位运算和权限设计
- 如何更改static控件的字体大小
- 昆仑通态复制的程序可以用吗_MCGS昆仑通态触摸屏常见问题(5)
- 分享一个超好用的批量处理PPT与PPTX转换,批量删除某一页PPT,批量DOC转换为DOCX的应用
- 站在两个世界的边缘——知无崖
- (跟新至2019)历年研究生数学建模题目与优秀论文
- CTF信息搜集/泄露
- 马尔代夫Robinson-友好亲切,流连忘返
- (转)C++进程间和线程间通信
- xbox360 功率测试软件,运行游戏164W!Xbox 360功耗早知道
热门文章
- 十个 Linux 新手管理员易犯错误
- 【每日一算法】二叉树的层次遍历 II
- yum update 正在尝试其他镜像
- Resource punkt not found.nltk.download()下载失败
- 科普| 3D视觉技术正在改变我们的生活
- 链表问题11——两个单链表相交的系列问题(二):找到两个无环链表的交点
- CSS中怎么让DIV居中
- iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?...
- iOS 生成二维码/条形码
- Python Tesseract 图片识别-小操练