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

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

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

相关文章推荐

Linux系统代理上网

Centos上进行代理上网,所有网络流量都能走代理,保证可用
  • kingfs
  • kingfs
  • 2016-12-15 17:29
  • 3565

修改/etc/fstab后不重启且生效的方法

之前,有个朋友问我开机出现挂载问题的解决方法,后来发现是他把 /etc/fstab 中的一行命令分成两行来写的原因。 之后修改好了,我让他重启试试,问题是解决了,但直到今天我才发现,原来要 /etc...

有一种爱,走入第十一年 [转自MOP]

我和男朋友认识、相爱第十一年了,我知道这辈子都会这样跟着他。如果不嫁给他,我也不会再嫁给另一个人。这不是意气用事,而是我真的不会再把心给第二个人了。如果顺利,2008年我们会有一个我们自己的家。   ...

find命令详解

前言find命令是我们日常工作中比较常用的Linux命令。全面的掌握这个命令可以使很多操作达到事半功倍的效果。如果对find命令有以下这些疑惑,本文都能帮你解决: find命令的格式是什么? 参数中出...

Linux配置定时,使用 crontab -e 与 直接编辑 /etc/crontab 的区别

Linux配置定时任务,大家都知道使用crontab这个系统功能,但有时候我们需要区分用户执行,下面就直接说一下2种方法的区别:方法1:使用命令 crontab -e 然后直接编辑定时脚本。这样执行以...
  • catoop
  • catoop
  • 2014-12-09 11:30
  • 73312

linxu find 命令 搜索字符串

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

通过案例学调优之--Oracle Time Model(时间模型)

通过案例学调优之--Oracle Time Model(时间模型)650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/57/7E/wKi...

centos服务器设置代理上网的方法

这里以centos7.0为例,记录代理服务器设置过程: 1.全局的代理设置: vi /etc/profile 添加下面内容 http_proxy = http://username:passw...

从小型网站到超大规模网站的MySQL参考架构

转自:http://www.infoq.com/cn/news/2013/03/MySQL-Reference-Architectures Oracle发布《面向大规模可伸缩网站基础设施的M...

slave_exec_mode对slave影响

slave_exec_mode 主要是控制mysql 主从复制中 insert 出现 duplicate-key, update 出现 no-key-found  情况下的处理方式做控制。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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