Linux搜索文件或目录

which命令

查看“可执行文件”的位置:

which + [选项] + 指令名

注意事项:which只能搜索命令,是通过PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件。

《Linux搜索文件或目录》

whereis命令

查看文件的位置:

whereis +[选项]+ 指令名

– whereis命令用来查找二进制程序、源代码文件和帮助文件在文件系统中的位置。

  • -b:只查找二进制文件;
  • -m:只查找帮助文件;
  • -s:只查找源文件;

《Linux搜索文件或目录》
whereis可以查找出系统目录下面的用户自定义文件,但是查不出root目录下的文件,因为root目录是用户自定义目录,不属于系统目录。

locate

配合数据库查找文件或目录:

locate +[选项]+ 文件或目录名

locate不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db,这个数据库中含有本地所有文件信息,Linux系统自动创建这个数据库,并且每周自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令;手动更新数据库。

《Linux搜索文件或目录》

注意事项:locate只能搜索文件,文件名是包含匹配;
prunepaths:PRUNEPATHS的值,多字符串、排除的路径;/etc/updatedb.conf

find命令

find搜索文件并执行指定操作:

find + 查询目录(即搜索范围) + [选项1] + 查询参数 + [选项2] +[执行操作]

– 选项1 -name:查询文件名;

  • 选项2 -print:将匹配结果输出到标准输出设备;
  • 选项2 -exec:搜索到文件后执行后续命令,常见格式为:-exec command {} \;即:将前面一个命令的结果交给command命令来处理;{}指的是前面找到的信息。

注:尽量避免搜索范围过大,例如 find / -name lilaoshi.file

《Linux搜索文件或目录》

例如:查找出root含有aaa名字的文件,并输出到屏幕上的同时,在每一个文件的前面和后面加一句话:i have 文件名字 this file!

find /root -name "*aaa*" -exec echo i hane {} this file!\;

根据文件更改的时间查找

  • -atime +n/-n:访问或执行时间大于/小于n天的文件;
  • -ctime +n/-n:写入、更改inode属性(例如更改所有者、权限或链接)时间大于/小于n天的文件;
  • -mtime +n/-n:写入时间大于/小于n天的文件;

《Linux搜索文件或目录》

《Linux搜索文件或目录》

find按文件类型查找

  • -type filetype:通过文件类型查找;
    文件类型filetype包含了f:普通文档、b:块设备文档、c:字符设备文档、d:目录、l:符号链接文档、s:串接口等

《Linux搜索文件或目录》

《Linux搜索文件或目录》

在当前目录下的子目录dir00及其子目录下查找txt后缀文件;

find ./ -path '*dir00*' -name *.txt

式中的[path…]部分表示以此目录为根目录进行搜索;
find命令的格式:

find [-path...] -options [-print -exec -ok]

-path:要查找的目录路径

  • ~:表示$HOME目录;
  • .:表示当前目录;
  • /:表示根目录;

-print:表示将结果输出到标准输出;
-exec:对匹配的文件执行该参数所给出的shell命令。形式为command {} ;注意{}\;之间有空格;
-ok:与-exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行;
options常用的有下选项:

  • -name:按照名字查找;
  • -perm:安装权限查找;
  • -prune:不在当前指定的目录下查找;
  • -user:按文件属主来查找;
  • -group:按属组来查找;
  • -nogroup:查找无有效所属组的文件;
  • -nouser:查找无有效属主的文件;
  • -type:按照文件类型查找;

文件的三个时间属性

  • Access time:atime、是在读取文件或者执行文件时更改的,即最后一次访问(仅仅是访问,没有修动)文件的时间;
  • Modified time:mtime、是在写入文件时随文件内容的更改而更改的,即最后一次修改文件的时间。
  • Create time:ctime、是在写入文件、更改所有者、权限或链接设置是随inode的内容更改而更改的,即最后一次对文件属性改变的时间。
  • inode:就是索引节点,它用来存放档案及目录的基本信息、包含时间信息、文档名、属主以及属组等。可以用df -i来查看各个分区的inode数量
    获得一个文件的atime、mtime以及ctime的方式:stat 命令

《Linux搜索文件或目录》

Linux之find命令详解

查找文件:find ./ -type f
查找目录:find ./ -type d
查找名字为test的文件或目录:find ./ -name test
查找名字符合正则表达式的文件,注意前面的‘.*’(查找到的文件带有目录)

find ./ -regex .*so.*\.gz

查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print是文件列表前一行不会显示目录名称)

find ./ -type d -print -exec ls {} \;

查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,执行命令前需要确认)

find ./ -type d -print -ok ls {} \;

查找目录并列出目录下的文件(将找到的目录添加到ls命令后一次执行,参数过长时会分多次执行)

find ./ -type d -exec ls {} +

查找文件名匹配*.c的文件:find ./ -name \*.c
打印test文件名后,打印test文件的内容

find ./ -name test -print -exec cat {} \;

不打印test文件名,只打印test文件的内容

find ./ -name test -exec cat {} \;

查找文件更新日时在距现在时刻二天以内的文件:

find ./ -mtime -2

查找文件更新日时在距现在时刻二天以上的文件:

find ./ -mtime +2

查找文件更新日时在距现在时刻一天以上二天以内的文件:

find ./ -mtime 2

查找文件更新日时在距现在时刻二分以内的文件:

find ./ -mmin -2

查找文件更新日时在距现在时刻二分以上的文件:

find ./ -mmin +2

查找文件更新日时在距现在时刻一分以上二分以内的文件:

find ./ -mmin 2

查找文件更新时间比文件abc的内容更新时间新的文件:

find ./ -newer abc

查找文件访问时间比文件abc的内容更新时间新的文件:

find ./ -anewer abc

查找空文件或空目录:

find ./ -empty

查找空文件并删除:

find ./ -empty -type f -print -delete

查找权限为644的文件或目录(需完全符合)

find ./ -perm 644

查找用户/组权限为读写,其他用户权限为读(其他权限不限)的文件或目录

find ./ -perm -644

查找用户有写权限或者组用户有写权限的文件或目录

find ./ -perm /220
find ./ -perm /u+w,g+w
find ./ -perm /u=w,g=w

查找所有者权限有读权限的目录或文件

find ./ -perm -u=r

查找用户组权限有读权限的目录或文件

find ./ -perm -g=r

查找其它用户权限有读权限的目录或文件

find ./ -perm -o=r

查找所有者为lzj的文件或目录

find ./ -user lzj

查找组名为gname的文件或目录

find ./ -group gname

查找文件的用户ID不存在的文件

find ./ -nouser

查找文件的组ID不存在的文件

find ./ -nogroup

查找有执行权限但没有可读权限的文件

find ./ -executable \! -readable

查找文件size小于10个字节的文件或目录

find ./ -size -10c

查找文件size等于10个字节的文件或目录

find ./ -size 10c

查找文件size大于10个字节的文件或目录

find ./ -size +10c

查找文件size小于10k的文件或目录

find ./ -size -10k

查找文件size小于10M的文件或目录

find ./ -size -10M 

查找文件size小于10G的文件或目录

find ./ -size -10G
    原文作者:孔雀东南飞
    原文地址: https://segmentfault.com/a/1190000011795756
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞