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 {} \;

留下評論

在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 機器變磚。閱讀這篇文章以了解更多信息