find、xargs命令使用及办法 详解

admin3年前网络知识162

find是linux命令,它将档案系统内符合expression的档案列出来,你可以指要档案的名称、类别、时间、大小、权限等不同命令的组合,只有完全相符的才会被列出来。
find可以在当前目录下甚至整个文件系统来查找某些文件或目录;

注意:find命令是相当耗资源的不得以的时候不要find的,比如说根 / 目录;

功能说明:查找文件或目录
    find-->实时查找:速度慢、精确匹配

命令语法:
find [options] [查找路径] [查找条件] [处理动作]
    查找路径:默认为当前目录
    查找条件:默认为查找指定路径下的所有文件
    处理动作:默认为显示

下面就来一起看下find的用法吧:

1.查找条件:根据文件名称查找时是严格区分字母大小写的

  -name "文件名称": 支持使用globbing
        *  :重复0次或者任意多次前面字符
        ? :单个字符 
        [] :字符范围
        [^]:排除字符范围


应用实例:
 1).查看/etc目录下有多少passwd文件:
[root@xiaomazi ~]#
[root@xiaomazi ~]#  find /etc -name "passwd"
/etc/pam.d/passwd
/etc/passwd
[root@xiaomazi ~]#

 2).查看/etc目录下所有以passwd开头的文件:
[root@xiaomazi ~]#  find /etc -name "passwd*"
/etc/pam.d/passwd
/etc/passwd-
/etc/passwd
[root@xiaomazi ~]#

 3).查看/etc目录下所有以passwd结尾的文件:
[root@xiaomazi ~]#  find /etc -name "*passwd"
/etc/pam.d/passwd
/etc/passwd
/etc/security/opasswd
[root@xiaomazi ~]#

2.-iname "文件名称":查找时不区分字符大小写
应用举例:

 1).查找/etc下所有以passwd开头的文件(并不区分大小写):
[root@xiaomazi ~]# touch /etc/Passwd -->创建测试文件
[root@xiaomazi ~]# find /etc -iname "passwd*"
/etc/pam.d/passwd
/etc/passwd-
/etc/passwd
/etc/Passwd
[root@xiaomazi ~]# rm -rf /etc/Passwd
注意不要再/etc目录下随便创建文件吆.

3.  根据属主属组来查找:

      -user UserName: 根据属主查找
      -group GroupName: 根据属组查找


应用举例:
1).查找文件的属主是Hadoop用户的文件:
[root@xiaomazi ~]# su - hadoop
[hadoop@xiaomazi ~]$ cp/etc/fstab/tmp/-->注意以谁的身份复制文件,文件的属主属组就是谁的.
[hadoop@xiaomazi ~]$ ls-l /tmp/
total 28
-rw-r--r--  1 hadoop hadoop  921 Feb 26 18:14 fstab
[hadoop@xiaomazi ~]$
[root@xiaomazi ~]# find /tmp -user hadoop
/tmp/fstab
[root@xiaomazi ~]#

2).查找文件的属组是hadoop用户的文件:
[root@xiaomazi ~]# find /tmp -group hadoop
/tmp/fstab
[root@xiaomazi ~]#

4.根据UID/GID来查找:
    -uid UID
    -gid GID
  如果我将Fedora用户删除,没有加选项-r,就不会删除用户文件的;如果文件的属主属组不在了,会发生什么问题呢?但是,如果此前不确定用户名,也可以使用uid的;


应用举例:
 1).查找/tmp目录下uid是501的所有文件:
[root@xiaomazi ~]# useradd fedora -->创建用户
[root@xiaomazi ~]# su - fedora -->切换到fedora用户
[fedora@xiaomazi ~]$ cp/etc/inittab/tmp/-->以fedora用户来复制文件
[fedora@xiaomazi ~]$ ls-l /tmp/
total 28
-rw-r--r--  1 hadoop hadoop  921 Feb 26 18:14 fstab
-rw-r--r--  1 fedora fedora  884 Feb 26 18:22 inittab
[fedora@xiaomazi ~]$ exit
logout
[root@xiaomazi ~]# userdel fedora -->模拟删除用户
[root@xiaomazi ~]# ls -l /tmp/
total 28
-rw-r--r--  1 hadoop hadoop  921 Feb 26 18:14 fstab
-rw-r--r--  1    501    501  884 Feb 26 18:22 inittab  -->注意:现在属主属组属于501
[root@xiaomazi ~]# find /tmp -user fedroa -->这是找不到的啦!
find: `fedroa' is not the name of a known user
[root@xiaomazi ~]# find /tmp -uid 501 -->假设我们知道fedora的uid,就可以全局范围的查找fedora的文件了.
/tmp/inittab
[root@xiaomazi ~]#


5.根据-nouser、-nogroup: 查找没有属主、属组的文件;
  -nouser:查找没有属主的文件,即该文件的属主在/etc/passwd中不存在。
  -nogroup: 查找没有属组的文件,即该文件所属的组在/etc/group中不存在。


应用举例:
1).假如说现在就在系统上找没有属主的文件应该怎么样找呢?
[root@xiaomazi ~]# find /tmp -nouser
/tmp/inittab
[root@xiaomazi ~]#

6.组合条件:
    -a: 与,同时满足(可以不写的)
    -o: 或,表示一个满足就可以
    -not, !:非,取反

应用举例:

1).查找/tmp目录下没有属主或属主为hadoop的文件:

[root@xiaomazi ~]# find /tmp -nouser -o -user hadoop
/tmp/inittab
/tmp/fstab
[root@xiaomazi ~]#

2).查找/tmp目录下属主为hadoop,并且文件以.txt结尾的文件:
[hadoop@xiaomazi ~]$ whoami
hadoop -->当前用户
[hadoop@xiaomazi ~]$ cd /tmp/
[hadoop@xiaomazi tmp]$ touch word.doc hello.txt
[hadoop@xiaomazi tmp]$ ll -->新建文件以便测试.
total 28
-rw-r--r--  1hadoop hadoop  921Feb 2618:14fstab
-rw-rw-r--  1hadoop hadoop    0Feb 2618:58hello.txt
-rw-r--r--  1501501884Feb 2618:22inittab
-rw-rw-r--  1hadoop hadoop    0Feb 2618:58word.doc
root用户
[root@xiaomazi ~]# find /tmp -user hadoop -name "*.txt"
/tmp/hello.txt
[root@xiaomazi ~]#

3).查找/tmp目录下属主为hadoop,并且也不是以.txt结尾的文件:

[root@xiaomazi ~]# find /tmp -user hadoop -a -not -name "*.txt"
/tmp/fstab
/tmp/word.doc
[root@xiaomazi ~]#

4).查找/tmp目录下属主不是hadoop,并且也不是以.txt结尾的文件
  I.使用的是-a选项:
[root@xiaomazi tmp]# find /tmp -not -user hadoop -a -not -name "*.txt"
/tmp
/tmp/inittab
/tmp/.ICE-unix
[root@xiaomazi tmp]#

  II.使用的是-o选项:

[root@xiaomazi tmp]#
[root@xiaomazi tmp]# find /tmp -not \( -user hadoop -o -name "*.txt" \)
/tmp
/tmp/inittab
/tmp/.ICE-unix
[root@xiaomazi tmp]#

5).查找/tmp目录下属主不是hadoop,或者不是以.txt结尾的:
[root@xiaomazi tmp]# find /tmp -not -user hadoop -o -not -name "*.txt"
/tmp
/tmp/inittab
/tmp/fstab
/tmp/word.doc
/tmp/.ICE-unix
[root@xiaomazi tmp]#

6.根据文件类型查找:

    -type: 根据文件类型查找
        f: 普通文件
        d: 目录
        b: 块设备
        c: 字符设备
        l: 符号链接文件
        p: 命名管道
        s: 套接字


应用举例:
1).将/tmp目录下的目录显示出来:
[root@xiaomazi tmp]# find /tmp -type d
/tmp
/tmp/.ICE-unix
[root@xiaomazi tmp]#

2).查找/tmp目录下的普通文件显示出来:
[root@xiaomazi tmp]# find /tmp -type f
/tmp/inittab
/tmp/fstab
/tmp/word.doc
/tmp/hello.txt
[root@xiaomazi tmp]#

本文从互联网转载,来源地址:www.inhv.cn/shell/17960.html,原作者保留一切权利,若侵权或引用不当,请联系测速网(inhv.cn)删除。【测速网,优质云服务器提供商】

《find、xargs命令使用及办法 详解》来自互联网同行内容,若有侵权,请联系我们删除!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

网络正常抖音无法连接的原因是什么

以抖音12.9.0版本为例,查看抖音后台设置是否禁用移动数据或无线网络,如果不能笃定缘由,用户可以删除抖音后重新下载安装。...

电脑格式化啥意思

电脑格式化,即在物理驱动器(硬盘)的所有数据区上写零的操作过程,格式化是一种纯物理操作,同时对硬盘介质做一致性检测,并且标记出不可读和坏的扇区。由于大部分硬盘在出厂时已经格式化过,所以只有在硬盘介质产...

贴贴怎么删除发布的动态 贴贴删除发布动态方法

最近很多小伙伴都在问小编,贴贴如何邀请微信好友?别着急,今天就为大家讲解一下贴贴app邀请好友的方法,有需要的小伙伴快来看看吧,希望能够帮助到大家!贴贴app邀请好友的方法首先进入手机的贴贴软件,点击...

win10提示你的电脑遇到问题需要重启

win10提示你的电脑遇到问题需要重启可能是由于杀毒软件的问题,系统与某些软件出现软件冲突等原因,正常启动之后可以使用电脑管家软件进行全机扫描检查。Windows 10是由美国微软公司开发的应用于计算...

台湾服务器租用需要注意哪些事项(租用台湾服务器注意事项)

本文将围绕租用台湾服务器的注意事项展开,主要从网络质量、价格、操作系统以及服务商可靠性这四个方面进行详细阐述。通过这篇文章,读者可以更好地理解租用台湾服务器时需要注意的事项。一、网络质量租用台湾服务器...

无线鼠标开关在哪里

无线鼠标开关在鼠标下面,如果没有就是免开关的鼠标,电池装好,发射器插电脑后任意点击左右键就可以了,如果不行就有可能是电池装反,电池没电,或者鼠标有问题,需要找销售商解决。无线鼠标是指无线缆直接连接到主...