Linux命令之find

         Linux下find命令通常用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为预查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

         参数:find命令使用时通常有俩参数,即path和expression。如果path取空,则默认为在当前路径下查找,如果expression取空,则默认为-print。有时还使用-mount或-xdev来检查和指定目录在同一个文件系统下的文件,避免列出其他文件系统中的文件。要想知道各种参数的用法和意义,首先得知道文件的时间三属性:

访问时间(access time):more、cat、vi等命令可以改变文件的访问时间

文件数据最新的修改时间(modify time):编辑和修改文件可改变文件数据的修改时间

文件状态修改时间(change time):权限、用户组、用户的改变都可改变文件状态

         常见的expression的选项有:

-type c                                文件类型是c的文件,常见的c的取值有:d(目录)、c(字型装置文件)、b(区块装置文件)、                                                 p(具名贮列)、f(一般文件)、l(符号链接文件)、s(socket文件)

-size n                                 文件大小是n单位的文件,n后可直接跟单位,b代表512位元组的区块,c表示字元数,k表示kilo bytes,w是2个位元组

-amin n                              在过去n分钟内被读取过的文件

-answer file                      比文件file更晚被读取过的文件

-atime n                             在过去n天内被读取过的文件

-cmin n                              在过去n分钟内被修改过的文件

-canswer file                    比file文件更晚被修改过的文件

-ctime n                             在过去n天内被修改过的文件

-empty                               空的文件

-ipath p(-path p)        路径符合p的文件,-ipath表示忽略大小写

-iname n(-name n)    文件名符合n的文件,-iname表示忽略大小写

-pid n                                  进程描述符是n的文件

除此之外还可以使用如下符号将运算式分隔:

exp1 –and exp2

!expr

-not expr

exp1 –or exp2

exp1,exp2

 

示例:

1.查找一般文件

find ./ -type f

通常此命令查找出来的文件数目较多

2.查找目录文件

find ./ -type d

3.查找名字为Head.c的文件

find ,. –name Head.c

4.查找名字符合正则表达式(.c文件)的文件

find ./ -regex .*\.c

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

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

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

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

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

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

8.查找文件名匹配*.c的文件

find ./ -name \*.c

9.打印Head.c文件名后,打印该文件内容

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

10.不打印Head.c文件名,只打印该文件内容

find ./ -name Head.c -exec cat {} \;

11.查找文件更新日在距现在时刻2天以内的文件

find ./ mtime -2

12.查找文件更新日在距现在时刻2天以上的文件

find ./ mtime +2

13. 查找文件更新日在距现在时刻1天以上2天以下的文件

find ./ mtime 2(查找结果为空,因为本机上没有符合条件的文件)

14. 查找文件更新日在距现在时刻2分以内的文件

find ./ -mmin -2

15. 查找文件更新日在距现在时刻2分以上的文件

find ./ -mmin +2

16. 查找文件更新日在距现在时刻1分以上2分以内的文件

find ./ -mmin 2

17.查找文件更新时间比文件Head.c的内容更新时间新的文件

find ./ newer Head.c

18.查找文件访问时间比文件Head.c的内容更新时间新的文件

find ./ answer Head.c

19.查找空文件或空目录

find ./ -empty

20.查找空文件并删除

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

21.查找权限为644的文件或目录

find ./ -perm 664

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

find ./ -perm -664

23.查找用户有写权限或者组用户有写权限的文件或mu路

find ./ -perm /220

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

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

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

find ./ -perm –u=r

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

find ./ -perm –g=r

26.查找其他用户权限有读权限的目录或文件

find ./ -perm –o=r

27.查找所有者为jx的文件或目录

find ./ -user jx

28.查找组名为jx的文件或目录

find ./ -group jx

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

find ./ -nouser

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

find ./ -nogroup

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

find ./ -executable \! –readable

32.查找文件大小小于10个字节的文件或目录

find ./ -size -10c

33.查找文件大小等于10个字节的文件或目录

find ./ -size 10c

34.查找文件大小大于10个字节的文件或目录

find ./ -size +10c

35.查找文件大小小于10k的文件或目录

find ./ -size -10k

36.查找文件大小小于10M的文件或目录

find ./ -size -10M

37. 查找文件大小小于10G的文件或目录

find ./ -size -10G

 

考题:

find /home/UFE/Signal/ -name “*.c” | xargs wc –l

         该命令为find和wc的结合命令,把find命令的结果作为wc命令的操作对象,这主要归功于管道和xargs命令。find命令的结果通过管道变成了xargs命令的输出,而xargs命令又把它的输入当作参数传递给了wc命令,所以起到了统计多个文件代码行数的效果。

1.find下统计一个目录下的文件个数以及代码总行数

知道指定后缀名的文件总个数命令

find ./ -name “*.c” | wc -l

知道一个目录下代码行总数以及单个文件行数

find ./ -name “*.c” | xargs wc –l

2.统计文件夹中文件数目

ls –l | grep “^-” | wc –l

ls –l以长列表形式输出该目录下文件(包括目录、链接、设备文件等)信息。如果使用ls –lR | grep “^-” | wc –l则可以连子目录下的文件一起统计。grep ^-将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录文件就是grep ^d。wc –l统计输出信息的行数,因为已经过滤掉了其他文件,只剩下一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

find ./ -type f | wc –l

由于此命令会默认去子目录查找,如果只想查找当前目录下的文件可用find ./ -maxdepth1 –type f | wc –l

3.查找更改时间比f1新但是比f2旧的文件

find –newer f1 !f2

4.xargs是给命令传递参数的一个过滤器,可以将前一个命令产生的结果作为后一个命令de 输入参数。比如,find ./ -name “.txt” | xargs em –rf,即将find产生的输出(当前目录下的所有的txt文件)作为rm的参数,从而完全删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值