【第22期】观点:IT 行业加班,到底有没有价值?

linux入门(二):find指令的用法

原创 2016年05月31日 09:08:04

   j_0055.gif我们知道,Linux下find命令可以在目录中搜索指定文件,并进行相应的操作。find命令提供了相

当强大的查找条件,功能很强大。所以今天我们来分析一下find的用法。与which和whereis不同的是

find在查找文件的时候是真正的在遍历所有的文件,如果find没有找到你所需要的目标的话,那系统中

一定不存在你所需要的文件,因此find在使用的时候会比其他的查找指令更详尽一些,当我们在运行一

个很消耗资源的find指令的时候,人们倾向于将其放在后台运行,因为遍历一个大的文件系统可能需要

很长时间。

  1. 命令格式

    find pathname -options[-print -exe -ok ...]

  2. 命令功能

    在文件树中查找文件,并进行相应操作(可能访问磁盘)。

  3. 命令参数

    pathname:find命令查找的搜索路径,例如用.来表示当前目录,/表示根目录

    -print:将查找后匹配的文件 并将其输出到标准输出上

    -exe:查找一个匹配文件并执行该参数给出的shell命令,相应的命令形式为‘command’{ } \ ;注意{ }和\之间的空格

    -ok:与-exe的作用相同,只不过以一种更安全的模式来执行,每次执行命令之前否会询问,让用户选择是否要执行

  4. 命令选项

    -name:按照文件名来查找

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

     -prune:使用这一选项可以使find不在当前指定的目录中查找

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

     -group:按照文件所述用户组来查找

     -mtime -n/+n:按照文件的修改时间来查找,-n表示文件修改时间距离现在n天以内,+n表示文件修改时间距离现在n天以外,find命令里面还有-atime,-ctime,作用都与-mtime

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

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

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

     -type:按照文件类型来查找:

      b-块设备文件

     c-字符设备文件

     d-目录文件

     l-符号链接文件

     f-普通文件

     p-管道文件

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

    -depth:表示查找文件时,先在当前目录中查找,再在当前目录的子目录中查找

(1)按照-name来查找

①、不管当前的搜索路径是什么,当我们要在自己的根目录下来搜索某个文件,可以用~来代表整个根目录,下面来看个栗子: 

wKiom1c2_O7SCxTfAAAbnSMHQy4601.png

其中find ~ -name “fuxin” -print 这一条命令是按照文件名来搜索文件名为fuxin的文件,并将

②、当我们在当前目录及其子目录下搜索目标文件的时候,我们可以用.来代替当前目录,如下:

其输出,注意这里的文件名要用双引号。

wKioL1c3Am3DP_bDAAAgucPSAxY027.png 

③、当我们想在当前目录中寻找一个文件名以小写字母开头的文件,可以用

ind . -name "[a-z]*" -print,示例如下

wKiom1c3Av3BokwIAACIinsdJNs020.png

同理大写字母只需要将a-z改成A-Z就可以了

④、当我们想在查找home目录中的文件,可以用:

find ~ -name "*" -print 或find . -print ,示例如下:

wKioL1c3BlLTw2iOAADUE2ZYuUw470.png

由于文件太多我这里只截了一部分,剩下的大家可以自己操作试试

(2)按照-perm来查找

写在前面:我们知道一个文件的权限管理有三类人:user,gorup,other,执行事件的属性有读,写,执行,三类,如果一类人用一位八进制来表示的话,我们可以用三位八进制数来表示一个文件的权限。举个例子先~

wKioL1c3CBKycYycAAAv0iTsEsE582.png

如上图所示,对于文件fuxin来说,对于user来说的权限为读写操作,对应的八进制为7,而对于group来说读写操作,对应的八进制为7,对于other来说权限为读操作,对应的八进制为5,所以文件fuxin的权限为775,这样的方式表示一个文件的权限就很方便了。

①、如果在当前目录下查找权限为XXX的文件,可以用:

find . -perm XXX -print,例子如下:

wKiom1c3CNmjprPbAAAVfTPzZFQ387.png

当我们要查找一个文件的三类人的权限是一样的文件时,例如777,可以讲八进制前面加一个杠,如-007,表示777,示例如下:

wKioL1c3Cr2iPLOFAAAeh6j61vM013.png

(3)如何在查找一个文件的时候避开某个目录?

例如:在目录dir1下查找不在目录dir2下的文件

find test -path "dirt/dir2" -prune -o -print

wKioL1c3DQKxOkFRAAAlawl17tU320.png

说明:

find [-path ..] [expression] 

在路径列表的后面的是表达式 

-path "test" -prune -o -print 是 -path "test" -a -prune -o -print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 

-path "test" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path "test" -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。 

这个表达式组合特例可以用伪码写为:

if -path "test" then  

-prune  

else  

-print

(4)使用-user和-nouser选项

①按文件所属主查找,-user

例:在home目录下查找所属主为user1的文件,可以用:

find ~ -user fuxin -print

wKioL1c3Dl3jGjAPAADdcdUPIBs109.png

这文件太多我只截了一部分,以实际操作为准。

同理如果在其他目录里查找一个文件,只需要将pathname改成其他路径就好了。

②、查找属主帐户已经被删除的文件,可以使用-nouser选项。

例:在/home目录下查找所有的这类文件,命令:find /home -nouser -print

(5)使用-group和-nogroup选项

①、与-user和-nouser一样,-group和-nogroup是针对文件所属组的,若要在home目录下查找用户组为fuxin的文件,命令:

find ~ -group fuxin -print

wKiom1c3E4LCQxz7AADgwvAWOf0564.png②、要在某个目录里查找无效所属组的文件可以用-nogroup,指令:

find pathname -nogroup -print

(6)使用-mtime -n +n选项

在系统根目录下查找距离今日1日时间的文件

find / -mtime -1 -print

wKiom1c3FdrAscB7AADV5ScruG4128.png同理要在目录中查找n日之前的目录,将-n改为+n即可。

(7)使用-newer file1! file2,查找某个比文件file1新且比file2旧 的文件

例如:在home中查找一个比test1新比test2旧的文件

find ~ -newer test1! test2 -print

(8)使用-type选项

在某个目录下查找文件类型为d的文件:

find ~ -type d -print

wKiom1c3GqTwCeBQAAD5UIvZXIw859.png当查找不同类型的文件只需要改变文件类型就行了。

(9)-size选项,查找长度为n块的文件(1块等于512字节)

如果要在home下查找长度为10000字节的文件:

find ~ -size 10000c -print

如果要在home下查找长度为10000块的文件

find~ -size 10000 -print

(10)-depth选项

在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。

在根目录中查找一个文件名为file的文件 

find / -name "file" -depth -print


wKiom1c3HhuRL4liAACMorOy5UM068.png

以上便是find常见指令的用法啦,写了好久,希望大家能够为我指出不足之处共同进步,谢谢啦!j_0046.gif

本文出自 “福大馨” 博客,转载请与作者联系!

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

linxu find 命令 搜索字符串

6、从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行 find / -type f -name "*.log" | xargs grep "password"
  • zj0910
  • zj0910
  • 2014-06-19 23:07
  • 5248

unix find & xargs 详解

xargs:       find -type f -name "*.unl" | xargs awk -F"|" '{if($1=="221"){print $0 > "log/"FILENAM...

linux find prune exec 排除某目录或文件 执行

查找cache目录下不是html的文件 find ./cache ! -name '*.html' -type f 列出当前目录下的目录名,排除includes目录,后面的-print...

find

linux命令

string类的find()函数总结

string类的头文件提供了很多搜索相关的函数比如find()函数及其变体。这使得我们可以以多种不同的方式在字符串中搜索给定的子字符串或字符。但是对于初学者来讲,经常被这些长相类似的函数所混淆。 下...

Find Q

Find Q    Accepts: 392    Submissions: 780  Time Limit: 2000/1000 MS (Java/Others)    Memor...

find函数

find  Find indices and values of nonzero elements 查找索引号和非零元素的值 Syntax 语法 indices = find(X) [i,...

find

LISTITN list; for (int i=0; i

find 基本用法

find 基本用法 find path -name "(字符)" 默认情况下搜寻path以及其所有子目录下的文件。 举例 find . -name "*cof*" # 找出当前目录以及其所有...

Loadrunner中web_find和web_reg_find函数的使用与区别

主要介绍两个函数:web_find()和web_reg_find();这两个函数均用于内容的查找,但两者也有本质的区别,具体介绍如下:   一、web_find()函数   该函数的作用是“从HT...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)