find命令的一些常用参数的常用实例和用时的注意事项。

    实例:

    (1)-name参数:

1)[sunjimeng@localhost home]$ find ~ -name "less*" -print           在指定目录和指定目录的子目录中查找与文件名匹配的文件

[sunjimeng@localhost home]$ find ~ -name "less*" -print
/home/sunjimeng/Documents/less1
/home/sunjimeng/Documents/less2

~是一个代位符,表明的是个人目录的地址,因为每个用户都有自己的个人目录地址,所以用 ~ 作为统一替代这个根据用户不同而不同但有规可循的地址,来保证某些情况下的兼容性问题。

如果以root登录,则~代表/home/root,若以username登录,则~代表/home/username,例如:我的目录就是/home/sunjimeng。

linux 中的$PATH $HOME 是什么意思?

在linux及unix的sh中,以$开头的字符串表示的是sh中定义的变量,这些变量可以是系统自动增加的,也可以是用户自己定义的。 $PATH表示的是系统的命令搜索路径,和windows的%path%是一样的;$HOME则表示是用户的主目录,也就是用户登录后工作目录。

波浪号~代表了你的$HOME目录。

2)[sunjimeng@localhost Document]$ find . -name "[A-Z]*[1-9]"        查找当前目录下以大写字母开头,数字结尾的文件。(注意[]符号的用法)

[sunjimeng@localhost Document]$ ll
总用量
-rw-r--r--. root root 5月 : all.txt
-rw-rw-r--. sunjimeng sunjimeng 5月 : B.text3
-rw-rw-r--. sunjimeng sunjimeng 5月 : C.text6
-rw-rw-r--. sunjimeng sunjimeng 5月 : D.text
drwxr-xr-x. root root 5月 : newDir
-rw-r--r--. root root 5月 : t1.txt
-rw-r--r--. root root 5月 : t2.txt
[sunjimeng@localhost Document]$ find . -name "[A-Z]*[1-9]"
./B.text3
./C.text6
[sunjimeng@localhost Document]$ find . -name "[A-Z]*"
./B.text3
./C.text6
./D.text

3)[sunjimeng@localhost Document]$ find / -name "*"        查找Linux文件系统中的所有文件,让系统高负荷运行

[sunjimeng@localhost Document]$ find / -name "*"

由于Linux的find命令是通过后台执行操作,遍历整个磁盘文件进行文件的查找,不仅包括名称的查找,还包括其他的例如权限,文件的内容的字符串匹配的查找,因此十分耗费资源,因此这里会让系统高负荷运行。而前几个命令,都是高效查询命令,例如which,whereis等,因为他们不是直接深入磁盘中查找,而是通过数据库的键值对应进行快速查找。

    (2)-perm参数

按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。

1)[root@localhost home]# find . -perm 755 |more -5        按权限在目录中查找文件,并执行分页显示

[root@localhost home]# find . -perm  |more -
.
./sunjimeng/.mozilla
./sunjimeng/.mozilla/extensions
./sunjimeng/.mozilla/plugins
./sunjimeng/.config
--more-- //按q键退出more命令 回车下一行,空格下一页

2)[root@localhost home]# find / -perm -mode |more -5       根据权限查看文件,当权限值前有-号时

[root@localhost home]# find / -perm  |more -
/
/boot
/proc
/proc/asound
/proc/asound/card0
--more--
[root@localhost home]# find / -perm - |more -
/
/boot
/boot/grub
/boot/grub2
/boot/grub2/themes
--more--
[root@localhost home]# find / -perm - |more -
/
/boot
/boot/grub
/boot/grub2
/boot/grub2/themes
--more--

find -perm,根据文件的权限来查找文件,有三种形式:

1.find -perm mode 

表示严格匹配,也就是你的文件权限位转换成对应的十进制数字与mode一模一样,那么匹配成功,需要注意的是如果mode给的数字不足3位,那么前面自动添0(严格的说是不足4位)

2.find -perm -mode

表示mode中转换成二进制的1在文件权限位里面必须匹配,比如mode=644那么转换成二进制为110 100 100,而被查找的文件的权限位也可以被转换成一个二进制数,两者在位上为1的部分必须完全匹配,而0则不管。例如被查找的文件的权限为转换成二进制数是111 111 111那么这个比如被匹配,而假如是100 100 100那么则不会匹配。所以这个'-'的作用归结起来就是匹配比mode权限更充足的文件

3.find -perm +mode

与 -mode的区别是+mode只需其中的任意一个1的部分被匹配,-mode是所有1的部分都必须被匹配,同样+mode也不管0位。

在linux中文件或目录有三者权限r,w,x,代表的含义分别是读、写、可执行。而一个文件或目录的属性中又包括所属用户u、所属组g、其他o三个部分的属性,分别表示所属用户、所属组、其他用户对这个文件所拥有的权限。看起来大概是这个样子:

   所属用户   所属组    其他
     rwx       rwx      rwx
  用户在其拥有权限的位上设置1,没有权限的位设置0。如果将每个部分的这些权限位看成二进制数,每个部分可以用3位二进制数表示,最大值为7(2^3-1),表示可读、可写、可执行。
 
    (3) -prune参数:
    如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略。
    1)[root@localhost sunjimeng]# find Document -path "Document/newDir" -prune -o -print         查询文件时忽略特定目录

[root@localhost sunjimeng]# find Document
Document
Document/newDir
Document/newDir/mvt1.txt
Document/newDir/mvt2.txt
Document/newDir/mvt3.txt
Document/t1.txt
Document/t2.txt
Document/all.txt
Document/B.text3
Document/C.text6
Document/D.text
[root@localhost sunjimeng]# find Document -path "Document/newDir" -prune -o -print
Document
Document/t1.txt
Document/t2.txt
Document/all.txt
Document/B.text3
Document/C.text6
Document/D.text

2)[root@localhost sunjimeng]# find Document -path "Document/newDir" -prune        find命令后默认只能跟一个参数命令,如果还需要执行其他的命令,需要-o命令连接符

[root@localhost sunjimeng]# find Document -path "Document/newDir" -prune        //-prune不加-print命令的话,输出的是要忽略的文件夹及其路径
Document/newDir
[root@localhost sunjimeng]# find Document -path "Document/newDir" -prune -o -exec ls -l {} \; -o用于设置执行的两个连续的命令,这里执行-exec命令,上一个命令执行的是-print命令,也可以换成其他的
总用量
-rw-r--r--. root root 5月 : all.txt
-rw-rw-r--. sunjimeng sunjimeng 5月 : B.text3
-rw-rw-r--. sunjimeng sunjimeng 5月 : C.text6
-rw-rw-r--. sunjimeng sunjimeng 5月 : D.text
drwxr-xr-x. root root 5月 : newDir
-rw-r--r--. root root 5月 : t1.txt
-rw-r--r--. root root 5月 : t2.txt
-rw-r--r--. root root 5月 : Document/t1.txt
-rw-r--r--. root root 5月 : Document/t2.txt
-rw-r--r--. root root 5月 : Document/all.txt
-rw-rw-r--. sunjimeng sunjimeng 5月 : Document/B.text3
-rw-rw-r--. sunjimeng sunjimeng 5月 : Document/C.text6
-rw-rw-r--. sunjimeng sunjimeng 5月 : Document/D.text

3)[root@localhost Documents]# find . \( -path "./Dir" -o -path "./findDir" \) -prune -o -exec ls -l {} \;      忽略多个文件夹

[root@localhost Documents]# ll
总用量
-rw-r--r--. root root 5月 : core.log
-rw-r--r--. root root 5月 : find
drwxr-xr-x. root root 5月 : findDir //是文件夹
--w-------. root root 5月 : head_text
--w-------. root root 5月 : less1
--w-------. root root 5月 : less2
--w-------. root root 5月 : newlocate
-rw-r--r--. root root 5月 : t3.txt
--w-------. root root 5月 : tail_text
--w-------. root root 5月 : tempory
--w-------. root root 5月 : uText
[root@localhost Documents]# mkdir Dir //新建一个文件夹
[root@localhost Documents]# mv {head_text,less1,less2} Dir //将几个文件移到里面
[root@localhost Documents]# ll
总用量
-rw-r--r--. root root 5月 : core.log
drwxr-xr-x. root root 5月 : Dir
-rw-r--r--. root root 5月 : find
drwxr-xr-x. root root 5月 : findDir
--w-------. root root 5月 : newlocate
-rw-r--r--. root root 5月 : t3.txt
--w-------. root root 5月 : tail_text
--w-------. root root 5月 : tempory
--w-------. root root 5月 : uText
[root@localhost Documents]# find . -exec ls -l {} \; //执行一次查询当前Documents文件夹下的所有目录及文件操作
总用量
-rw-r--r--. root root 5月 : core.log
drwxr-xr-x. root root 5月 : Dir
-rw-r--r--. root root 5月 : find
drwxr-xr-x. root root 5月 : findDir
--w-------. root root 5月 : newlocate
-rw-r--r--. root root 5月 : t3.txt
--w-------. root root 5月 : tail_text
--w-------. root root 5月 : tempory
--w-------. root root 5月 : uText
--w-------. root root 5月 : ./tail_text
--w-------. root root 5月 : ./tempory
--w-------. root root 5月 : ./newlocate
--w-------. root root 5月 : ./uText
总用量
--w-------. root root 5月 : p1.pdf
--w-------. root root 5月 : p2.pdf
--w-------. root root 5月 : t1.txt
--w-------. root root 5月 : T1.txt
-rw-r--r--. root root 5月 : t2.txt
--w-------. root root 5月 : T2.txt
--w-------. root root 5月 : ./findDir/t1.txt
--w-------. root root 5月 : ./findDir/T1.txt
--w-------. root root 5月 : ./findDir/T2.txt
--w-------. root root 5月 : ./findDir/p1.pdf
--w-------. root root 5月 : ./findDir/p2.pdf
-rw-r--r--. root root 5月 : ./findDir/t2.txt
-rw-r--r--. root root 5月 : ./find
-rw-r--r--. root root 5月 : ./core.log
-rw-r--r--. root root 5月 : ./t3.txt
总用量
--w-------. root root 5月 : head_text
--w-------. root root 5月 : less1
--w-------. root root 5月 : less2
--w-------. root root 5月 : ./Dir/head_text
--w-------. root root 5月 : ./Dir/less1
--w-------. root root 5月 : ./Dir/less2
[root@localhost Documents]# find . \( -path "./Dir" -o -path "./findDir" \) -prune -o -exec ls -l {} \; //忽略两个文件夹,执行操作
总用量
-rw-r--r--. root root 5月 : core.log
drwxr-xr-x. root root 5月 : Dir
-rw-r--r--. root root 5月 : find
drwxr-xr-x. root root 5月 : findDir
--w-------. root root 5月 : newlocate
-rw-r--r--. root root 5月 : t3.txt
--w-------. root root 5月 : tail_text
--w-------. root root 5月 : tempory
--w-------. root root 5月 : uText
--w-------. root root 5月 : ./tail_text
--w-------. root root 5月 : ./tempory
--w-------. root root 5月 : ./newlocate
--w-------. root root 5月 : ./uText
-rw-r--r--. root root 5月 : ./find
-rw-r--r--. root root 5月 : ./core.log
-rw-r--r--. root root 5月 : ./t3.txt
[root@localhost Documents]# find . \( -path "./Dir" -o -path "findDir" \) -prune -o -exec ls -l {} \;不加./是无法进行匹配的,-path “findDir”无意义(根据结果可知)
总用量
-rw-r--r--. root root 5月 : core.log
drwxr-xr-x. root root 5月 : Dir
-rw-r--r--. root root 5月 : find
drwxr-xr-x. root root 5月 : findDir
--w-------. root root 5月 : newlocate
-rw-r--r--. root root 5月 : t3.txt
--w-------. root root 5月 : tail_text
--w-------. root root 5月 : tempory
--w-------. root root 5月 : uText
--w-------. root root 5月 : ./tail_text
--w-------. root root 5月 : ./tempory
--w-------. root root 5月 : ./newlocate
--w-------. root root 5月 : ./uText
总用量
--w-------. root root 5月 : p1.pdf
--w-------. root root 5月 : p2.pdf
--w-------. root root 5月 : t1.txt
--w-------. root root 5月 : T1.txt
-rw-r--r--. root root 5月 : t2.txt
--w-------. root root 5月 : T2.txt
--w-------. root root 5月 : ./findDir/t1.txt
--w-------. root root 5月 : ./findDir/T1.txt
--w-------. root root 5月 : ./findDir/T2.txt
--w-------. root root 5月 : ./findDir/p1.pdf
--w-------. root root 5月 : ./findDir/p2.pdf
-rw-r--r--. root root 5月 : ./findDir/t2.txt
-rw-r--r--. root root 5月 : ./find
-rw-r--r--. root root 5月 : ./core.log
-rw-r--r--. root root 5月 : ./t3.txt

    (4)-user参数

1)[root@localhost Document]# find . -user sunjimeng -exec ls -l {} \;        查找属于特定用户的文件及文件夹

[root@localhost Document]# find . -user sunjimeng -exec ls -l {} \;
总用量
-rw-r--r--. root root 5月 : all.txt
-rw-rw-r--. sunjimeng sunjimeng 5月 : B.text3
-rw-rw-r--. sunjimeng sunjimeng 5月 : C.text6
-rw-rw-r--. sunjimeng sunjimeng 5月 : D.text
drwxr-xr-x. root root 5月 : newDir
-rw-r--r--. root root 5月 : t1.txt
-rw-r--r--. root root 5月 : t2.txt
-rw-rw-r--. sunjimeng sunjimeng 5月 : ./B.text3
-rw-rw-r--. sunjimeng sunjimeng 5月 : ./C.text6
-rw-rw-r--. sunjimeng sunjimeng 5月 : ./D.text
[root@localhost Document]# find . -user root -exec ls -l {} \;
总用量
-rw-r--r--. root root 5月 : mvt1.txt
-rw-r--r--. root root 5月 : mvt2.txt
-rw-r--r--. root root 5月 : mvt3.txt
-rw-r--r--. root root 5月 : ./newDir/mvt1.txt
-rw-r--r--. root root 5月 : ./newDir/mvt2.txt
-rw-r--r--. root root 5月 : ./newDir/mvt3.txt
-rw-r--r--. root root 5月 : ./t1.txt
-rw-r--r--. root root 5月 : ./t2.txt
-rw-r--r--. root root 5月 : ./all.txt

2)[root@localhost /]# find . -nouser -exec ls -l {} \;      查找不属于任何用户的文件

[root@localhost /]# find . -nouser -exec ls -l {} \;                  //这里没找着
find: ‘./proc//task//fd/’: 没有那个文件或目录
find: ‘./proc//task//fdinfo/’: 没有那个文件或目录
find: ‘./proc//fd/’: 没有那个文件或目录
find: ‘./proc//fdinfo/’: 没有那个文件或目录
find: ‘./run/user//gvfs’: 权限不够

另外,还有其他的参数,例如按文件的大小-size,按查询路径的深度-depth,按文件的新旧程度-newer,按更改时间或访问时间-mtime,按类型-type等等。

      在此并不一一举例。况且前两篇也有一些示例。

每天一个Linux命令(22)find命令_命令详解的更多相关文章

  1. Linux命令:修改文件权限命令chmod、chgrp、chown详解

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权 限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而 ...

  2. ubuntu 下命令行播放器mplayer 使用详解

    ubuntu 下命令行播放器mplayer 使用详解 2011-01-02 21:00:42|  分类: Linux/Unix |  标签: |字号大中小 订阅 使用 MPlayer 播放媒体文件最简 ...

  3. linux系统的任务计划crontab使用详解

    linux系统的任务计划crontab使用详解 其实大部分系统管理工作都是通过定期自动执行某一个脚本来完成的,那么如何定期执行某一个脚本呢?这就要借助linux的cron功能了. 关于cron任务计划 ...

  4. Linux(centos)系统各个目录的作用详解

    Linux(centos)系统各个目录的作用详解 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码 ...

  5. Linux NFS服务器的安装与配置详解

    一.NFS服务简介 NFS是Network File System(网络文件系统).主要功能是通过网络让不同的服务器之间可以共享文件或者目录.NFS客户端一般是应用服务器(比如web,负载均衡等),可 ...

  6. Linux中用postfix搭建邮件服务器实战详解

    Linux中用postfix搭建邮件服务器实战详解 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.Postfix试图更快.更容易管理.更安全,同时 ...

  7. 轻松学习Linux之Shell文件和目录属性详解

    轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...

  8. Linux DTS(Device Tree Source)设备树详解之二(dts匹配及发挥作用的流程篇)【转】

    转自:https://blog.csdn.net/radianceblau/article/details/74722395 版权声明:本文为博主原创文章,未经博主允许不得转载.如本文对您有帮助,欢迎 ...

  9. Linux中redis安装配置及使用详解

    Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ...

  10. Linux 网络流量实时监控工具之ntopng详解

    大纲一.前言二.ntopng 简介三.ntopng 功能说明 四.ntopng 安装详解五.ntopng 配置详解 六.ntopng 使用详解注,操作系统 CentOS 5.5 X86_64,软件版本 ...

随机推荐

  1. 【HTML5】元素<head>的使用

    功能描述 在新建的页面<head>元素中,加入该元素所包含的各类标签,并定义超级链接的样式.当单击"请点击我"标签时,并展示相应效果并进入<base>元素设 ...

  2. mysql 语句要求

    mysql 语句不可以有单引号,要把单引号替换为双引号!

  3. json字符串转为json对象-jQuery.parseJSON()

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Swing中GridBagLayout布局的使用

    1 http://pydoing.blogspot.com/2011/05/java-gridbaglayout.html  台湾人博客,需FQ 2 http://zhangjunhd.blog.51 ...

  5. Android实用工具

    1 json类:hiJson 格式化json字符串 2 sqlite类:sqlitespy,SQLiteExpertSetup 3

  6. centOS7安装RabbitMQ及python实例

    1.rabbitmq是有erlang开发的,所以首先要先安装erlang rpm -ivh erlang-18.1-1.el7.centos.x86_64.rpm rpm -ivh rabbitmq- ...

  7. Redis的订阅发布

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using ServiceS ...

  8. Redis学习笔记-Redis内部数据结构

    Redis内部数据结构 Redis和其他key-value数据库的很大区别是它支持非字符串类型的value值.它支持的value值的类型如下: sds (simple dynamic string) ...

  9. kafka官方Quick Start

    1.下载kafka,并上传到服务器 2.如果之前没安装zookeeper,这里可以启动一个简单的zookeeper bin/zookeeper-server-start.sh config/zooke ...

  10. 【C#学习笔记】之用button使得textbox中数字的值增减

    代码段: string t = ""; t = mv.textBox2.Text; int n = int.Parse(t); n = n + 1; mv.textBox2.Tex ...