linux命令总结之查找命令find、locate、whereis、which、type

2024-01-02 16:32

本文主要是介绍linux命令总结之查找命令find、locate、whereis、which、type,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们经常需要在系统中查找一个文件,那么在Linux系统中我们如何准确高效的确定一个文件在系统中的具体位置呢?一下我总结了在linux系统中用于查找文件的几个命令。

1、find命令

find是最常用也是最强大的查找命令,它可以查找任何类型的文件。

find命令的一般格式为:find <指定目录><指定条件><指定动作>,即find pathname -options [-print -exec -ok]

参数解释:

pathname:pathname为搜索的目录及其子目录,默认情况下为当前目录

常用的option选项:

-name:按文件名来查找文件

-user:按照文件的属主来查找文件

-group:按照文件所属的组来查找文件

-perm:按照文件权限来查找文件

-prune:不在当前指定目录中查找

例如:已知在/etc,/etc/pam.d以及/user/bin目录下都有一个名为passwd的文件,我们看一下-prune的作用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

[root@Gin /]# find -name "passwd"  ## 为在当前目录及其子目录下下查找名为passwd的文件

./usr/bin/passwd

./etc/passwd

./etc/pam.d/passwd

 

[root@Gin /]# find . -path ./etc -prune -o -name "passwd" -print  ##为在当前目录及其子目录(除了/etc目录及其子目录)下查找名为passwd的文件。

./usr/bin/passwd

[root@Gin /]# find . -path ./etc -prune -o -name "passwd"  ##区别带-print参数与不带-print参数

./usr/bin/passwd

./etc

 

[root@Gin /]# find . -path ./usr -prune -o -name "passwd" -print  ##为在当前目录及其子目录(除了/usr目录及其子目录)下查找名为passwd的文件。

./etc/passwd

./etc/pam.d/passwd

 

[root@Gin scripts]# cp /etc/passwd ./

find / \( -path /usr/bin -o -path /etc \) -prune -o -name "passwd" -print  ##为在当前目录及其子目录(除了/usr/bin目录及其子目录;/etc目录及其子目录)下查找名为passwd的文件。由于命令行不能直接识别圆括号,因此要用转义字符\,在和前后都要有空格。

/gin/scripts/passwd

注意:find命令不加任何参数时,表示搜索路径为当前目录及其子目录,默认的动作为-print,即不过滤任何结果,也就是说输出所有的文件。

-mtime -n +n:按照文件修改时间来查找文件,-n表示文件修改时间距现在n天以内,+n表示文件修改时间据现在n天以前

-type:查找某一类型的文件(b:块设备文件;d:目录文件;c:字符设备文件;p:管道文件;l:链接文件;f:普通文件)

-nogroup:查找无有效所属组的文件,即文件所属的组在/etc/group中不存在

-nouser;查找无有效所属主的文件,即文件的所属主在/etc/passwd中不存在

2、locate命令

locate命令实际是"find -name"的另一种写法,但是查找方式跟find不同,它比find快得多。因为它不搜索具体目录,而是在一个数据库(/var/lib/locatedb)中搜索指定的文件。次数据库含有本地文件的所有信息,此数据库是linux系统自动创建的,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,默认情况下为每天更新一次,所以用locate命令你搜索不到最新更新的文件,除非你在用locate命令查找文件之前手动的用updatedb命令更新数据库。

1

2

3

4

5

6

7

8

9

10

11

12

13

[root@Gin scripts]# echo "I love linux" >locatetest

[root@Gin scripts]# locate locatetest ##更新数据库前

[root@Gin scripts]# find -name "locatetest"

./locatetest

[root@Gin scripts]# updatedb ##更新数据库后

[root@Gin scripts]# locate locatetest

/gin/scripts/locatetest

[root@Gin scripts]# rm -f locatetest ##执行删除文件后

[root@Gin scripts]# find -name "locatetest"

[root@Gin scripts]# locate locatetest

/gin/scripts/locatetest

[root@Gin scripts]# locate locatetest

[root@Gin scripts]#

注意:每次有新文件更新和删除之后,在updatedb之前数据库中保存的文件信息不会改变,即新添加一个文件之后,updatedb之前用locate搜索不到指定的文件。同样再删除一个文件信息已经在数据库中的文件时,updatedb之前用locate照样能搜索到该文件的信息,,尽管此时该文件已经不存在了。

3、whereis命令

whereis命令只能用于搜索二进制文件(-b)、源代码文件(-s)、说明文件(-m)。如果省略参数则返回所有的信息。

1

2

3

4

5

6

7

8

9

10

[root@Gin scripts]# whereis --help

whereis [ -sbmu ] [ -SBM dir ... -f ] name...

[root@Gin scripts]# whereis find

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

[root@Gin scripts]# whereis -b find

find: /bin/find /usr/bin/find

[root@Gin scripts]# whereis -m find

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

[root@Gin scripts]# whereis -s find

find:

4、which命令

which命令是在PATH变量指定的路径中搜索指定的系统命令的位置。用echo $PATH可显示当前PATH变量的值。

1

2

3

4

[root@Gin scripts]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@Gin scripts]# which find

/bin/find

5、type命令

type命令主要用于区分一个命令到底是shell自带的还是外部独立的二进制文件提供的。如果是shell自带的则会提示此命令为shell buildin,否则会列出命令的位置。例如:cd为shell自带的命令,当用which查找时,which会按照PATH变量设置的路径进行搜索,结果显示no cd in...;用type cd则显示cd为shell buildin命令。ssh不是shell自带命令,用type时会显示ssh的路径。

1

2

3

4

5

6

[root@Gin scripts]# which cd

/usr/bin/which: no cd in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

[root@Gin scripts]# type cd

cd is a shell builtin

[root@Gin scripts]# type ssh

ssh is /usr/bin/ssh

这篇关于linux命令总结之查找命令find、locate、whereis、which、type的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/563021

相关文章

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon