Linux上的五个文件搜索命令

介绍

Linux上有五个档搜索命令:whereislocatewhichtype,和find。它们每个都有自己的特点,并针对特定的搜索方案而设计。本指南将向您介绍每个命令并显示示例用法。为了进一步阅读这些命令中的任何一个,最好查看适当的手册页。

whereis

whereis命令用于在指定的任何程序名称的几个标准安装目录中搜索二进制文件,源代码和联机手册页。

因为whereis不会搜索系统上的每个位置,所以找不到这些特定目录中的任何文件。出于同样的原因,无论是否找到,您都将快速获得搜索结果。

而且,它不会搜索直接内置在shell中的那些命令。

例如,如果要查找有关该ls命令的信息,请在终端上运行以下命令:

whereis ls

您将收到一些反馈,例如:

ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

结果/bin/ls是要查找的二进制文件,另外两个是该ls程序的联机帮助页,未ls找到该程序的源代码。

/bin/ls文件复制到您的主目录和/usr/bin目录,然后whereis再次运行命令:

cp /bin/ls ~
cp /bin/ls /usr/bin/ls
whereis ls

如您所见,只有/bin/ls/usr/bin/ls在搜索结果中找到。ls在主目录中找不到该程序,因为主目录不是那些标准安装目录之一。

ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

如果运行以下命令:

whereis cd

您将看到类似于以下行的输出。没有发现二进制文件,因为它cd是Shell的内置命令。

cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz

locate

locate命令用于在数据库(/var/lib/mlocate/mlocate.db)的帮助下按名称查找文件。该数据库基本上是文件系统布局的快照。该数据库中与您的查询匹配的所有记录将在搜索结果中列出。默认情况下,该locate命令将使用查询来匹配每个记录的全名的任何部分,包括路径名。因此,搜索结果中匹配文件的数量可能会超出您的预期。

随着数据库的过时,locate命令的搜索结果变得不太准确。您可能会注意到不再存在的文件,或者看不到新创建文件的匹配项。默认情况下,mlocate.db数据库每天自动更新一次。您可以使用updatedb命令手动更新它。

因为搜索是在数据库而不是文件系统上执行的,所以搜索速度非常快。

如果运行以下命令:

locate ls

您将获得许多记录,而不是预期的结果。

为了使搜索结果更准确,可以使用该-b标志来限制搜索范围,使用查询来仅匹配每个记录的基本名称:

locate -b "\ls"

这次,您将获得在文件ls系统上完全调用的每个文件的位置:

/bin/ls

which

which命令将搜索您在环境变量的值中指定的命令,PATH并默认返回第一个结果。如果要查询别名,该which命令将在执行搜索之前确定别名的实际命令。

which命令由于其简单性也非常快。

which命令的用法很简单:

which your_command

如果要显示所有匹配的命令而不是第一个,请使用-a标志:

which -a your_command

这是搜索已别名的命令的示例:

which ll

搜索结果将是:

alias ll='ls -l --color=auto'
    /bin/ls

type

默认情况下,该type命令将指示如何解释命令名称。可能的结果包括别名,关键字,函数,内置函数或文件。与whereis命令一样,该type命令将仅在几个标准安装目录中搜索以回答您的查询。

键入不同命令的一些示例:

Shell内置命令:

type cd

cd is a shell builtin

文件系统上的一个二进制文件:

type sudo

sudo is /usr/bin/sudo

别名:

type ls

ls is aliased to `ls --color=auto'

find

在本教程介绍的五种文件搜索命令中,该find命令是功能最强大的一个。它也是最慢的一个。与其他四个命令不同,该find命令实际上将在整个文件系统上逐个i节点搜索您的文件。使用该find命令,您可以使用复杂的查询条件来查找所需的每个文件,甚至还可以对找到的文件执行操作。

find命令的搜索条件过于复杂,无法在如此短的文章中进行解释,这里是一些示例。

find命令的基本格式:

find [path] [option] [action]

要在工作目录及其所有子目录中找到所有文件,请执行以下操作:

find

aaa在您的主目录及其所有子目录中找到一个名为的文件:

find ~ -name 'aaa'

要查找文件系统中最近24小时内已修改的所有文件,请执行以下操作:

find / -mtime 0

要查找Web目录中的所有文件及其所有属于user的子目录nginx

find /usr/share/nginx/html/ -user nginx

在工作目录中查找其权限为的所有文件0744

find -perm -0744

aaa在工作目录中找到具有该名称的文件并列出其详细信息,请执行以下操作:

find -name 'aaa' -exec ls -l {} \;


Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息