Linux查找文件相关命令

文章目录


在使用Linux的时候,经常会遇到需要查找文件的情况
这里把Linux下常用的查找指令做个整理

命令功能路径权限
find在目录中查找文件/usr/bin/find所有用户
locate按文件名搜索文件/usr/bin/locate所有用户
which查找命令路径/usr/bin/which所有用户
whereis查找二进制文件、源代码文件和man手册页(帮助文档)/usr/bin/whereis所有用户

find

find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

格式:find 搜索路径 表达式

find [path] [expression]

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

-name: 按照文件名搜索;

EG.[root@localhost ~]# find / -name home    #在根目录下查找名字为home的文件及文件夹

-iname: 按照文件名搜索,不区分文件名大小;

-inum: 按照 inode 号搜索;在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号号(Inode Index)或者Inode,它是文件或者目录在一个文件系统中的唯一标识

-size[±]大小:按照指定大小搜索文件,"+“的意思是搜索比指定大小还要大的文件,”-" 的意思是搜索比指定大小还要小的文件

EG.[root@localhost ~]# find . -size 2k  #当前路径下大小为2k的文件及文件夹

-atime [±]时间: 按照文件访问时间搜索,文件中的数据库最后被访问的时间

-mtime [±]时间: 按照文件修改时间搜索,文件内容被修改的最后时间

-ctime [±]时间: 按照文件变化时间搜索,文件的元数据发生变化。比如权限,所有者等。

注意:-1:代表1天(24小时)内修改的文件。1:代表前1~2天那一天修改的文件。+1:代表2天前修改的文件。

EG.[root@localhost ~]# find . -atime -1  #当前路径下1天(24小时)内修改的文件

上三条time单位为天,可以修改成min如amin、mmin 和 cmin,单位为分钟

-perm 权限模式:査找文件权限刚好等于"权限模式"的文件

-perm -权限模式:査找文件权限全部包含"权限模式"的文件

-perm +权限模式:査找文件权限包含"权限模式"的任意一个权限的文件

EG.[root@localhost ~]# find . -perm 755 #当前目录下755权限的内容,(ll看到的是drwxr - xr - x)

-uid 用户 ID:按照用户 ID 査找所有者是指定 ID 的文件

-gid 组 ID:按照用户组 ID 査找所属组是指定 ID 的文件

-user 用户名:按照用户名査找所有者是指定用户的文件

-group 组名:按照组名査找所属组是指定用户组的文件

-nouser:査找没有所有者的文件

EG.[root@localhost ~]# find . -user root	#查找当前路径下所有者是root的内容

-type d:查找目录

-type f:查找普通文件

-type l:查找软链接文件

EG.[root@localhost ~]# find . -type d	#当前路径下有哪些子目录

另外,find的表达式是可以组合使用的

-a:and逻辑与

-o:or逻辑或

-not:not逻辑非

EG.[root@localhost ~]# find . -type d -not -perm 755	#当前路径下为子目录但权限不为755的内容

locate

locate与find 不同: find 是去硬盘找,locate 只在/var/lib/slocate资料库中找。
locate的速度比find快,它并不是真的查找,而是查数据库,一般文件数据库在/var/lib/slocate/slocate.db中,所以locate的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:locate -u

格式:locate [选项] 文件名

locate [-option] filename

选项:
-i:忽略大小写
-d或–database= 配置locate指令使用的数据库。locate指令预设的数据库位于/var/lib/slocate目录里,文档名为slocate.db,您可使用 这个参数另行指定。
–help  在线帮助。
–version  显示版本信息。

EG.[root@localhost ~]# locate filename	#查找文件名为filename的文件

which

which指令会在环境变量$PATH设置的目录里查找符合条件的文件。 which指令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令。

格式:which 文件

which file

查ls指令的位置

EG.[root@localhost ~]# which ls

whereis

Linux whereis指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。

格式:whereis [选项] 文件

whereis [option] commands

选项:
-b  只查找二进制文件。
-B<目录>  只在设置的目录下查找二进制文件。
-f  不显示文件名前的路径名称。
-m  只查找说明文件。
-M<目录>  只在设置的目录下查找说明文件。
-s  只查找原始代码文件。
-S<目录>  只在设置的目录下查找原始代码文件。
-u  查找不包含指定类型的文件。

EG.[root@localhost ~]# whereis ls	#ls二进制指令及其帮助文档的位置
EG.[root@localhost ~]# whereis -b ls	#ls二进制指令的位置
EG.[root@localhost ~]# whereis -m ls	#ls帮助文档的位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值