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

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 ~]$ exitlogout[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 ~]#

看不见我将要去的地方,记不得我已经去过的地方。

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

相关文章:

你感兴趣的文章:

标签云: