经过 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文件查找工具的探索相关推荐

  1. Linux文件查找工具之find “大宝剑”--转载

    原文地址:http://xinzong.blog.51cto.com/10018904/1749465 一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法 ...

  2. Linux文件查找工具之find “大宝剑”

    一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这 ...

  3. linux文件查找工具,分享|Linux 中一种友好的 find 替代工具

    fd 命令提供了一种简单直白的搜索 Linux 文件系统的方式. fd 是一个超快的,基于 Rust 的 Unix/Linux find 命令的替代品.它不提供所有 find 的强大功能.但是,它确实 ...

  4. linux 查找文件 locate,linux文件查找(find,locate)

    文件查找: locate: 非实时,模糊匹配,查找是根据全系统文件数据库进行的: # updatedb, 手动生成文件数据库 速度快 find: 实时 精确 支持众多查找标准 遍历指定目录中的所有文件 ...

  5. Linux文件查找之find秘笈

    前言 Linux的基本特点之一是一切皆文件,在系统管理过程中难免会需要查找特定类型的文件,那么问题 来了:如何进行有效且准确的查找呢?本文将对Linux系统中的文件查找工具及用法进行详细讲解. 常用工 ...

  6. linux的locate工具,linux文本查找工具之locate、find

    linux文本查找工具之locate.find 一.文件查找分为两类: 1.非实时查找:locate 2.实时查找:find 二.非实时查找:locate 非实时查找:查找速度快.非精准查找.模糊查找 ...

  7. linux进入文件全文搜索命令,Linux 文件查找命令详解

    大家好,我是"孤云幕雨":祝大家中秋快乐,今天给大家带来的是<Linux文件查找命令> 一.locate:依赖于事先构建的索引 v依赖于事先构建的索引:索引的构建是在系 ...

  8. Duplicate File Finder for Mac(重复文件查找工具)

    Duplicate File Finder for Mac 破解版就能够帮助您将这些占用您空间的重复软件和文件删除了,Duplicate File Finder Mac版具有智能"拖放&qu ...

  9. Linux文件查找与tar包管理、企业级sed应用 软件包管理与编译安装httpd

    总结 第7节 Linux文件查找与tar包管理.企业级sed应用 使用locate命令 使用find命令 压缩和解压缩工具 01-文件搜索 locate (00:02:30) locate test. ...

最新文章

  1. 收藏 | 10本免费的机器学习和数据科学书籍(附链接)
  2. 评价cnblogs.com的用户体验
  3. 那些生活中的应该知道的知识
  4. Spring-Data-JPA 动态查询黑科技
  5. Django(part47)--文件上传
  6. 禅道 11.4.1 版本发布,主要优化细节
  7. 毕设日志——配置服务器与测试gpu版本的tf faster rcnn代码
  8. 【论文笔记】命名实体识别论文
  9. java集合 线程安全
  10. Not enough space in file systems for the current software selection. An additional XXXX MiB is neede
  11. 概要设计 英文_JavaScript 中的位运算和权限设计
  12. 如何更改static控件的字体大小
  13. 昆仑通态复制的程序可以用吗_MCGS昆仑通态触摸屏常见问题(5)
  14. 分享一个超好用的批量处理PPT与PPTX转换,批量删除某一页PPT,批量DOC转换为DOCX的应用
  15. 站在两个世界的边缘——知无崖
  16. (跟新至2019)历年研究生数学建模题目与优秀论文
  17. CTF信息搜集/泄露
  18. 马尔代夫Robinson-友好亲切,流连忘返
  19. (转)C++进程间和线程间通信
  20. xbox360 功率测试软件,运行游戏164W!Xbox 360功耗早知道

热门文章

  1. 十个 Linux 新手管理员易犯错误
  2. 【每日一算法】二叉树的层次遍历 II
  3. yum update 正在尝试其他镜像
  4. Resource punkt not found.nltk.download()下载失败
  5. 科普| 3D视觉技术正在改变我们的生活
  6. 链表问题11——两个单链表相交的系列问题(二):找到两个无环链表的交点
  7. CSS中怎么让DIV居中
  8. iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?...
  9. iOS 生成二维码/条形码
  10. Python Tesseract 图片识别-小操练