linux文件查找

QuibblerQuibbler 2020-09-15 约 19 分钟 1810 次阅读

 linux文件查找

Linux查找文件通过命令行可以快速的查找,两年前看过《鸟哥的Linux私房菜》,还记得有几个命令:which、whereis、locate、find用来查找文件。每个命令都有高级用法,现在来学习一下简单的常用用法。

1、which

which用来查找Linux命令程序所在的位置。

1.1、参数

which命令--help查看有如下的可选参数:

--version,-[vV]        打印版本并成功退出。

--help                        打印此帮助并成功退出。

--skip-dot                  跳过PATH中以点开头的目录。

--skip-tilde                跳过PATH中以波浪号开头的目录。

--show-dot                不要在输出中将点扩展到当前目录。

--show-tilde              为非根用户输出HOME目录的代字号。

--tty-only                   如果不在tty上,则停止处理右侧的选项。

--all,-a                     打印PATH中的所有匹配项,而不仅仅是第一个

 --read-alias,-i          从stdin读取别名列表。

--skip-alias                忽略选项--read-alias; 不要读标准输入。

--read-functions        从stdin读取shell函数。

--skip-functions        忽略选项--read-functions; 不要读标准输入。

1.2、用法示例

查看git命令在哪里

which git

2、whereis

whereis命令用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)

2.1、参数

whereis命令可选参数如下:

-b                        仅搜索二进制文件

-B <dirs>            定义二进制文件查找路径

  -m                       仅搜索手册

-M <dirs>           定义人查找路径

-s                        仅搜索源

-S <dirs>            定义源查找路径

-f                         终止<dirs>参数列表

 -u                        搜索异常条目

-l                         输出有效的查找路径

2.2、whereis示例

查找Linux中git的位置

whereis git

输出信息从左至右分别为查询的程序名、bash路径、bash的man 手册页路径

3、locate 文件资料库搜索

前面介绍的几个查找命令只使用于命令、程序的查找,一般文件的定位需使用locate命令。locate命令实际上是去查Linux中的文件数据库(/var/lib/slocate/slocate.db),所以查找速度很快,但是可能新建的文件数据库没有及时更新而找不到。

3.1、参数

有些Linux发新版本竟然没有自带locate命令,需要自己安装。看看locate有哪些可选参数,这么多不需要都记住,只要记住几个常用的即可。

-A                                           所有仅打印匹配所有模式的条目

-b,-basename                      仅匹配路径名的基本名称

-c,--count                            仅打印找到的条目的数量

-d,--database DBPATH        使用DBPATH代替默认数据库(即/var/lib/mlocate/mlocate.db)

-e,--existing                         仅打印当前现有文件的条目

-L,--follow                            检查文件存在时遵循尾随的符号链接(默认)

-h,--help                              打印此帮助

-i,--ignore-case                   匹配模式时忽略大小写区别

-l,--limit,-n LIMIT              将限制输出(或计数)到LIMIT条目

-m,--mmap                          被忽略,用于向后兼容

-P,-nofollow,-H                 在检查文件存在时不遵循尾随的符号链接

-0,--null                               在输出上使用NUL的单独条目

-S,-statistics                         不会搜索条目,而是打印有关每个使用的数据库的统计信息

-q,--quiet                             报告有关读取数据库的任何错误消息

-r,-regexp REGEXP              搜索基本的regexp REGEXP而不是模式

--regex                                   模式是扩展的正则表达式

-s,--stdio                             被忽略,以实现向后兼容

-V,--version                         打印版本信息

-w,--wholename                 匹配整个路径名(默认)

3.2、示例

查找git文件

locate git

4、find 全盘检索

和上面的locate命令不同,find查找文件速度比较慢,因为find是去硬盘查找文件。

4.1、参数

find命令更加强大,用法也比之前复杂的多:

find [path] [option] [action]

-name                      按照“文件名”查找文件。要忽略大小写,使用 -iname 选项

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

-prune                     使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

-user                        按照文件属主来查找文件。

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

-mtime -n +n           按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。

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

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

-newer file1 ! file2   查找更改时间比文件file1新但比文件file2旧的文件。

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

-size n:[c]               查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

-fstype                     查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount                     在查找文件时不跨越文件系统mount点。

-follow                     如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

-cpio                        对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

4.2、用法

①查找当前目录下的指定文件

#查找当前目录下的.php结尾的文件
    find *.php

②查找指定目录下的文件,所有的文件夹都会被递归地查找。

find /home/wwwroot/default/ -name "*.txt"

③-perm查找当前目录下具有特点权限的文件

find ./ -perm 0777

④查找空目录:先使用-type d限定目录,再筛选-empty空的

find ./ -type d -empty

⑤查找隐藏文件:隐藏文件以.开头,所以使用.*通配符匹配,-name参数要用双引号“”

find -name ".*"

⑥-mtime查找最近修改的文件,m代表modify

#最近一天之内修改过的文件
    find -mtime -1

⑦-atime查找最近访问的文件,a代表access

find -atime -1

⑧-cmin最近小时更改过的文件,c代表change

#最近60分钟内变更过的文件
    find -cmin -60

⑨查找特定范围大小的文件

#大小在1Mb~10Mb之间的文件
    find -size +1M -size -10M

以上介绍常用的,通过组合查找功能非常强大!

参考资料:

        菜鸟教程 > Linux 命令大全

        Linux which命令

        Linux whereis命令

        Linux locate命令

        linux之find命令

        Linux中find命令用法全汇总

        Linux下文件搜索、查找、查看命令

相关推荐

精选
获取系统SDK版本、判断手机ROM
Code

获取系统SDK版本、判断手机ROM

Build获取系统SDK版本Android中部分API的使用,需要在特定的SDK版本之后才能使用,因此在兼容老版本SDK的时候,经常需要判断API的版本。各种Android版本的对应关系参考《Android各版本对应的SDK版本》判断手机ROM有时候需要判断手机系统的ROM,检测ROM是MIUI、EMUI还是Flyme,可以使用getprop命令,去系统build.prop文件(关于build.p

3.7k
精选
AndroidStudio中各种中文乱码问题
Code

AndroidStudio中各种中文乱码问题

AndroidStudio中各种中文乱码问题1、编译Java错误信息乱码在出现这个Annotation processors must be explicitly declared now...问题的时候,正好也发现AndroidStudio Build Output错误信息都乱码。经常遇到各种问题,习惯了,现在遇到的问题,都是以后的答案。 1.1、修改项目build.gradle(无效)在整个p

2.4k
AndroidStudio 报错:has no declaration in the base values folder
Code

AndroidStudio 报错:has no declaration in the base values folder

在资源文件中正常定义的值,也能编译运行。昨天还正常,今天一打开就报错。应该又是AndroidStudio自身的Bug了。原因众说纷纭,参考Stack Overflow 一篇类似的讨论。解决:File => Invalidate Caches / Restart => Invalidate and Restart.

4.4k