百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Linux文件查找工具的探索

sinye56 2024-11-18 16:41 3 浏览 0 评论

经过 Linux 系统不断探索,不断发展到现代文明,我们都必须坚信:一个典型的 Linux 系统是包含很多文件的,即是由文件组成的!那么新的问题就会涌现到我们的脑海中-- “我们如何查找呢?”。当然,发展到现在的Linux 文件系统已经被良好地组织起来了。不过呢,海量的文件往往会引起一些可怕的问题。


作为一名LINUX 运维人员,每天面对着这些 linux 系统实际生产环境,必须有过硬的技术能力和良好的心理素质才能胜任。在今天这篇文章中,我们将介绍2 个用来查找文件的工具。

命令locate , updatedb , find 和 xargs 都是 GNU 项目 findutils 软件包的一部分。这个GUN 项目提供了大量的在线文档,这些文档相当出色,如果你在高安全性的环境中使用这些程序,你应该读读相关文档。当然,在编写这篇文章过程中我还参考了 这本书,内容很贴近实践,很有理论指导实践价值的一本书籍。

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@ ~]$ 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 的时候,我们需要这个选项


来源:ITPUB博客

作者:roc_guo

相关推荐

Linux两种光驱自动挂载的方法

环境:CentOS6.4西昆云服务器方式一修改fstab文件/etc/fstab是系统保存文件系统信息?静态文件,每一行描述一个文件系统;系统每次启动会读取此文件信息以确定需要挂载哪些文件系统。参...

linux系统运维,挂载和分区概念太难?在虚机下操作一次全掌握

虚拟机的好处就是可以模拟和学习生产环境的一切操作,假如我们还不熟悉磁盘操作,那先在虚机环境下多操作几次。这次来练习下硬盘扩容操作。虚拟机环境:centos8vm11linux设备命名规则在linux中...

Linux 挂载 NFS 外部存储 (mount 和 /etc/fstab)

mount:手工挂载,下次重启需再重新挂载,操作命令:mount-tnfs-ooptionsserver:/remote/export/local/directory上面命令中,本地目录...

在Linux中如何设置自动挂载特定文件系统(示例)

Linux...

Linux环境中的绑定挂载(bind mount)

简介:Linux中的mount命令是一个特殊的指令,主要用于挂载文件目录。而绑定挂载(bindmount)命令更为特别。mount的bind选项将第一个目录克隆到第二个。一个目录中的改变将会在...

Linux挂载CIFS共享 临时挂载 1. 首先

如何解决服务器存储空间不足的问题?大家好,欢迎回来。在上一期视频中,我为大家介绍了如何利用Linux挂载来扩容服务器存储空间。这一期视频,我将以Linux为例,教大家如何进行扩容。群辉使用的是Linu...

Linux 硬盘挂载(服务器重启自动挂载)

1、先查看目前机器上有几块硬盘,及已挂载磁盘:fdisk-l能够查看到当前主机上已连接上的磁盘,以及已经分割的磁盘分区。(下面以/dev/vdb磁盘进行分区、挂载为例,挂载点设置为/data)df...

linux 挂载磁盘

在Linux中挂载硬盘的步骤如下:...

笨小猪教您Linux磁盘挂载

本教程针对Linux系统比较熟悉或者想学习Linux基础的用户朋友,本教程操作起来比较傻瓜式,跟着步骤就会操作,本文使用的工具是XShell同时多多注意空格(文中会有提示)。【问答】什么是磁盘挂载?答...

Linux 磁盘挂载和docker安装命令

本篇给大家介绍Linux磁盘挂载和docker安装的相关内容,Linux服务器的操作是一个手熟的过程,一些不常用的命令隔断时间就忘记了,熟话说好记性不如烂笔头,还需在平时的工作中多练习记录。...

Linux设置开机自动挂载分区

有时候,我们在安装完Linux系统之后,可能在使用过程中添加硬盘或者分区进行使用,这时候就需要手动把磁盘分区挂载到某个路径,但是开机之后就会消失,需要重新挂载,非常麻烦,那么我们应该如何设置开机自动挂...

在linux挂载一个新硬盘的完整步骤

以下是在Linux中挂载新原始磁盘的完整步骤,包括分区、创建文件系统以及使用UUID在/etc/fstab中启动时挂载磁盘:将新的原始磁盘连接到Linux系统并打开电源。运行以下命令,...

Linux系统如何挂载exFAT分区

简介:Linux系统中不能像Windows系统那样自动识别加载新设备,需要手动识别,手动加载。Linux中一切皆文件。文件通过一个很大的文件树来组织,文件树的根目录是:/,从根目开始录逐级展开。这些文...

Linux系统挂载硬盘

fdisk-l查看可挂载的磁盘都有哪些df-h查看已经挂载的磁盘...

WSL2发布,如何在Win10中挂载Linux文件系统

WSL2是最新版本的架构,它为Windows子系统提供支持,使其能够在Windows上运行ELF64Linux二进制文件。通过最近的更新,它允许使用Linux文件系统访问存储在硬盘中的文件。如果你...

取消回复欢迎 发表评论: