Linux - find命令讲解

我们都听说过Linux下“一切皆文件”的说法吧,在这样一个系统下工作,我们不可避免的要查找一些的文件,这么多的文件我们如何进行查找呢?!这就是今天要解决的问题。


可以用来查找文件的指令:
which:在PATH变量指定的路径中搜索某一个命令的位置,并且返回第一个搜索结果。也就是这个命令只能搜索到某个命令是否存

在,并且执行的是哪一个位置的命令。

whereis:只能用于程序名、二进制文件(-b)、man说明文件(-m)、以及源代码文件的搜索(-s)。

locate:用于查找文件,搜索速度比find命令快,是由于执行该命令之前先建立一个数据库,当后面再需要查找时只去这个库里面查

找,而不会进行其他更深入的查找。

除了上述三个之外,我们还有一个功能非常强大的find命令该命令可以在目录结构中搜索文件,并执行指定的操作,比如按文件

名、文件类型、文件权限等等搜索条件来进行查找。除此之外,即使系统中含有网络文件,只要具有权限,我们利用find命令也可以

执行。但find有一个极大的缺点:在搜索过程中可能会访问磁盘,导致搜索效率很低。


Find命令:

1.命令格式:find  pathname  -options  [-print  -exec  -ok  ...]

2.命令功能:实现在文件树中查找文件,并作出相应的处理。

3.命令参数:

pathname:find命令所查找的目录路径。~表示$HOME目录, .表示当前目录,  /表示系统根目录

print:find命令将匹配的文件输出到标准输出

-exec:find命令对匹配的文件执行该参数所给出的shell命令。

-ok:与-exec作用相同。

4.-options常用的选项:(这些只是比较常用的)

-name:按照指定文件名来查找

-perm:按照文件权限查找

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

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

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

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

-type:按照类型查找文件

-size  n[c]:查找长度为n字节(或块)大小的文件,带有c时表示文件长度以字节计。


一、使用实例:

1、按照指定文件名来查找:-name

find  -name  test.c   :在当前目录下查找test.c文件

find  ~  -name  "*.txt"   :在home目录下查找所有的.txt文件

find  .  -name  "*.c"   :在当前目录下查找所有的.c文件


2、按照文件的时间来查找(-atime,-mtime,-ctime)

find  pathname  -mtime  -/+n:-n表示文件的修改时间在n天以内,+n表示修改时间在n天以前


find  pathname  -atime  -/+n:按照文件的访问时间来查找



3、按照文件权限来进行查找:-perm

find  pathname  -perm  权限的八进制表示


4、根据文件的所属主/所属组来查找:

find  pathname  -user  属主

find  pathname  -group  属组


5、查找无有效属主或属组的文件:

find  pathname  -nouser

find  pathname  -nogroup


6、查找更改时间比file文件新的文件

find  pathname  -newer  file



7、查找某一类型的文件:

find  pathname  -type  参数  

参数:

b - 块设备文件
d - 目录
c - 字符设备文件
p - 管道文件
l - 符号链接文件
f - 普通文件


8、查找指定长度的文件(带有c时表示文件长度以字节计)

find  pathname -size n:[c]


find  pathname  -size  -n(c):查找比n(字节)小的文件
find  pathname  -size  +n(c):查找比n(字节)大的文件



9、按照文件目录的深度进行递归查找

find  pathname  -depth

find  pathname  -mindepth  n:搜索目录距离当前目录至少n个目录深度

find  pathname  -maxdepth  n:搜索目录距离当前目录至多n个目录深度



10、-prune:忽略某个目录

如果在查找过程中希望某个目录忽略,那么可以用该命令之处要忽略的目录。但是当同时使用-depth时,-prune就会被find命令忽

略。比如当希望在test目录下查找文件,但不希望在test/test3目录下查找时,命令是:

find  pathname  "test/test3"  -prune'

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

12、-mount:在查找文件时不跨越文件系统mount点。也就是说在当前的文件系统中查找文件(不进入其他系统)。

例如:从当前目录开始查找位于本文件系统中文件名以“.txt”结尾的文件

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

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


二、使用exec或ok来执行shell命令

1、-exec:把想要的操作写在一个文件里。
命令形式:'command'  { }  \;  (注意command、{}、\之间的空格,以及最后的分号)


2、-ok:与-exec作用相同,区别在于:在执行命令之前,系统都会给出提示,确定用户是否执行


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值