Linux学习---文件查找

grep, egrep, fgrep  :文本查找

文件查找

locate

全系统查找,非实时,模糊匹配。查找时根据全系统文件数据库进行的。
系统在每天的计划任务时间生成数据库。

updatedb  手动生成文件数据库。

速度快。


find

实时查找,精确。速度慢。
遍历指定目录中所有文件完成查找。

支持多种查找标准。

find   PATH   查找标准   找到后的处理动作

          路径默认:表示当前目录
          标准默认:指定路径下所有文件
          动作默认:为打印到屏幕上

查找标准:

-name: 根据文件名精确查找,做精确匹配。严格区分大小写
                 支持文件名通配:
                         *     ?    []
-iname :  文件名匹配不区分大小写。
[root@localhost shell_example]# find /etc -name passwd
/etc/passwd
/etc/pam.d/passwd

[root@localhost shell_example]# find /etc -name 'passwd*'
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
[root@localhost shell_example]# find /etc -name '*passwd'
/etc/passwd
/etc/security/opasswd
/etc/pam.d/passwd

-regex  PATTERN  :基于正则表达式进行文件查找。

-user   USERNAME: 根据文件的属主来查找

-group GROUPNAME: 根据属组查找

一旦某个用户被删除,那么此前属主是这个用户的文件的属主变成这个用户此前的UID。

-uid: 根据UID查找
-gid: 根据GID查找

-nonuser :查找没有属主的文件。
-nogroup:查找没有属组的文件。               

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

-size :根据文件大小。默认单位字节。
    [+/-]#k   
           #M
           #G
   找 10M 的文件,所有9.xM 的文件都认为是10M。

组合条件:
-a:  and
-o:  or
-not: not

默认是 and 操作。

[root@localhost test]# find ./ -not -user user1 -ls
479024    0 drwxr-xr-x   2 root     root           38 7月 18 21:43 ./
3670696    0 -rw-r--r--   1 user2    root            0 7月 18 21:43 ./b
3692673    0 -rw-r--r--   1 root     root            0 7月 18 21:43 ./c
3692674    0 -rw-r--r--   1 root     root            0 7月 18 21:43 ./d
[root@localhost test]# find ./ -not -user user1 -a -not -user user2 -ls
479024    0 drwxr-xr-x   2 root     root           38 7月 18 21:43 ./
3692673    0 -rw-r--r--   1 root     root            0 7月 18 21:43 ./c
3692674    0 -rw-r--r--   1 root     root            0 7月 18 21:43 ./d

[root@localhost test]# find ./ -not \( -user user1 -a -type d \) 
./
./a
./b
./c
./d
./hi
[root@localhost test]# ll
总用量 0
-rw-r--r--. 1 user1 root 0 7月  18 21:43 a
-rw-r--r--. 1 user2 root 0 7月  18 21:43 b
-rw-r--r--. 1 root  root 0 7月  18 21:43 c
-rw-r--r--. 1 root  root 0 7月  18 21:43 d
drwxr-xr-x. 2 user1 root 6 7月  18 21:44 hello
drwxr-xr-x. 2 root  root 6 7月  18 21:45 hi

-mtime:修改时间
-ctime: 改变时间
-atime: 访问时间
      #     #天前
     +#    至少#天没有
     -#     #天之内
[root@localhost test]# find /tmp -atime +7
/tmp/.X11-unix/X0
/tmp/.ICE-unix/3504
/tmp/.esd-1000/socket
/tmp/a.hadoop
/tmp/ssh-DqYXtl0A4ffy/agent.3504
/tmp/swap.txt
/tmp/sed.txt
/tmp/blandline.txt
/tmp/bash.txt
/tmp/nologin.txt
/tmp/.X0-lock
/tmp/set.txt
[root@localhost test]# find /tmp -atime +30
/tmp/.X11-unix/X0
/tmp/.ICE-unix/3504
/tmp/.esd-1000/socket
/tmp/a.hadoop
/tmp/ssh-DqYXtl0A4ffy/agent.3504
/tmp/.X0-lock

分钟:
   -mmin  
   -cmin
   -amin

[root@localhost test]# find ./ -amin -5
[root@localhost test]# touch -a a 
[root@localhost test]# find ./ -amin -5
./a

-perm MODE  : 755 644  精确匹配权限来查找。
           /MODE: 任意一位权限匹配即满足条件。  或关系。
           -MODE: 文件权限能完全包含此MODE时才显示。  与关系。
[root@localhost test]# find ./ -perm 644 -ls
2121677    0 -rw-r--r--   1 user1    root            0 7月 18 21:43 ./a
3670696    0 -rw-r--r--   1 user2    root            0 7月 18 21:43 ./b
3692673    0 -rw-r--r--   1 root     root            0 7月 18 21:43 ./c
3692674    0 -rw-r--r--   1 root     root            0 7月 18 21:43 ./d
[root@localhost test]# chmod o-r a
[root@localhost test]# ll
总用量 0
-rw-r-----. 1 user1 root 0 7月  18 21:43 a
-rw-r--r--. 1 user2 root 0 7月  18 21:43 b
-rw-r--r--. 1 root  root 0 7月  18 21:43 c
-rw-r--r--. 1 root  root 0 7月  18 21:43 d
drwxr-xr-x. 2 user1 root 6 7月  18 21:44 hello
drwxr-xr-x. 2 root  root 6 7月  18 21:45 hi
[root@localhost test]# find ./ -perm 644 -ls
3670696    0 -rw-r--r--   1 user2    root            0 7月 18 21:43 ./b
3692673    0 -rw-r--r--   1 root     root            0 7月 18 21:43 ./c
3692674    0 -rw-r--r--   1 root     root            0 7月 18 21:43 ./d
[root@localhost test]# man chmod
[root@localhost test]# find ./ -perm /644
./
./a
./b
./c
./d
./hello
./hi
[root@localhost test]# find ./ -perm /640
./
./a
./b
./c
./d
./hello
./hi
[root@localhost test]# chmod 006 b
[root@localhost test]# find ./ -perm /640
./
./a
./c
./d
./hello
./hi


执行动作:

默认 -print  :打印
-ls :类似 ls -l 的形式显示每个文件的详细信息。
-ok  COMMAND  {}  \;  反斜线分号结束。 每个操作需要用户确认。
-exec  COMMAND {}  \;   无需确认,直接执行。
[root@localhost test]# ll
总用量 0
-rw-r-----. 1 user1 root 0 7月  18 21:43 a
-------rw-. 1 user2 root 0 7月  18 21:43 b
-rw-r--r--. 1 root  root 0 7月  18 21:43 c
-rw-r--r--. 1 root  root 0 7月  18 21:43 d
drwxr-xr-x. 2 user1 root 6 7月  18 21:44 hello
drwxr-xr-x. 2 root  root 6 7月  18 21:45 hi
[root@localhost test]# find ./ -perm -006
./b
[root@localhost test]# find ./ -perm -006 -exec chmod o-rw {} \;
[root@localhost test]# ll
总用量 0
-rw-r-----. 1 user1 root 0 7月  18 21:43 a
----------. 1 user2 root 0 7月  18 21:43 b
-rw-r--r--. 1 root  root 0 7月  18 21:43 c
-rw-r--r--. 1 root  root 0 7月  18 21:43 d
drwxr-xr-x. 2 user1 root 6 7月  18 21:44 hello
drwxr-xr-x. 2 root  root 6 7月  18 21:45 hi

[root@localhost test]# find ./ -type d -ok chmod +x {} \;
< chmod ... ./ > ? 
< chmod ... ./hello > ? 
< chmod ... ./hi > ? 

[root@localhost test]# find ./ -perm -060 -exec mv {} {}.new \;
[root@localhost test]# ll
总用量 0
-rw-rw-r--. 1 root  root 0 7月  18 21:43 1.new.new
-rw-r-----. 1 user1 root 0 7月  18 21:43 a
-rw-rw-rw-. 1 root  root 0 7月  18 22:24 b.new
-rw-r--r--. 1 root  root 0 7月  18 21:43 c
-rw-rw-rw-. 1 root  root 0 7月  18 22:24 d.new
drwxr-xr-x. 2 user1 root 6 7月  18 21:44 hello
drwxr-xr-x. 2 root  root 6 7月  18 21:45 hi

找到所有.sh 结尾的并且所有用户都有执行权限的文件,将其他用户的执行权限去掉。
[root@localhost sh]# find ./ -name "*.sh" -perm -111 -exec chmod o-x {} \;
[root@localhost sh]# ll
总用量 112
-rwxr-xr--. 1 root root  153 7月  18 22:28 add.sh
-rwxr-xr--. 1 root root  647 7月  18 22:28 adduser.sh
-rwxr-xr--. 1 root root  303 7月  18 22:28 bash2.sh
-rwxr-xr--. 1 root root  209 7月  18 22:28 bash.sh
-rwxr-xr--. 1 root root   57 7月  18 22:28 calc.sh
-rwxr-xr--. 1 root root  267 7月  18 22:28 cpu.sh
-rwxr-xr--. 1 root root  340 7月  18 22:28 expired.sh
-rwxr-xr--. 1 root root  232 7月  18 22:28 file.sh
-rwxr-xr--. 1 root root  194 7月  18 22:28 filetest1.sh
-rwxr-xr--. 1 root root  227 7月  18 22:28 filetest.sh
-rwxr-xr--. 1 root root  148 7月  18 22:28 history.sh
-rwxr-xr--. 1 root root  296 7月  18 22:28 lees4.sh
-rwxr-xr--. 1 root root  155 7月  18 22:28 less1.sh
-rwxr-xr--. 1 root root   70 7月  18 22:28 less2.sh
-rwxr-xr--. 1 root root  394 7月  18 22:28 less3_1.sh
-rwxr-xr--. 1 root root  201 7月  18 22:28 less3_2.sh
-rwxr-xr--. 1 root root  206 7月  18 22:28 less3.sh
-rwxr-xr--. 1 root root  254 7月  18 22:28 sayhi.sh
-rwxr-xr--. 1 root root   66 7月  18 22:28 shift.sh
-rwxr-xr--. 1 root root 1209 7月  18 22:28 statisticsshell.sh
-rwxr-xr--. 1 root root  262 7月  18 22:28 string.sh
-rwxr-xr--. 1 root root  249 7月  18 22:28 sum2.sh
-rwxr-xr--. 1 root root  188 7月  18 22:28 sum3.sh
-rwxr-xr--. 1 root root   85 7月  18 22:28 sum.sh
-rwxr-xr--. 1 root root   49 7月  18 22:28 test1.sh
-rwxr-xr--. 1 root root  116 7月  18 22:28 than.sh
-rwxr-xr--. 1 root root  366 7月  18 22:28 usermanage.sh
-rwxr-xr--. 1 root root  167 7月  18 22:28 utest.sh

练习:

1、找到/var下属主root  属组mail的所有文件
[root@localhost sh]# find /var -user root -group mail -ls
100664298    4 drwxrwxr-x   2 root     mail         4096 7月 18 21:40 /var/spool/mail
103419761  196 -rw-------   1 root     mail       198458 6月 12 23:23 /var/spool/mail/root


2、找到/usr下不属于root、bin或student的文件
[root@localhost sh]# find /usr -not \( -user root -o -user bin -o -user beny \) -ls
68744954    4 drwx------   2 polkitd  root         4096 4月 25 22:10 /usr/share/polkit-1/rules.d
34704584   16 -rwsr-sr-x   1 abrt     abrt        15336 12月  1  2015 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache


3、找/etc下最近一周内内容修改且不属于root及student用户的文件
[root@localhost sh]# find /etc -mtime -7 -not -user root -ls


4、找当前系统没有属主或属组且最近1天内访问过,并将属主、属组改为root
[root@localhost sh]# find / -nouser -nogroup -exec chown root:root {} \;


5、找/etc下大于1M的文件并写入/tmp/etc.largefiles 
[root@localhost sh]# find /etc/ -size +1M -exec cp {} /tmp/etc.largefiles \;
[root@localhost sh]# ls -lh /tmp/etc.largefiles 
-r--r--r--. 1 root root 1.4M 7月  18 22:55 /tmp/etc.largefiles


6、找/etc下所有用户都没有写权限的文件,显示详细信息。
















本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
在上一篇文章中,详细讲述了Spring中注册AOP解析器的过程。在这篇文章中,将进一步讲解Advisors的创建过程。 Spring中注册AOP解析器的所有操作都是针对AnnotationAwareAspectJAutoProxyCreator进行的。AnnotationAwareAspectJAutoProxyCreator是实现AOP的根本。首先观察AnnotationAwareAspectJAutoProxyCreator的类层次结构。 图1 AnnotationAwareAspectJAutoPr
 总体来说 设计模式 分为三大类:创建型模式、结构型模式和行为型模式。 博主的上一篇文章已经提到过创建型模式,此外该文章还有设计模式概况和设计模式的六大原则。设计模式的六大原则是设计模式的核心思想,详情请看博主的另外一篇文章:  Java经典设计模式之五大创建模式(附实例和详解) 。 接下来我们看看结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。其中的对象的适配器模式是各种结构
大话设计模式 1 面向对象的好处 可维护、可重复、可扩展 。 2 包含的角色 简单工厂模式包含三个角色: 工厂类Factory :工厂类是用来制造产品的。因此,在Factory中有一个用于制造产品的Create函数或者Generate函数之类的函数。这个函数能够根据“标识符”的不同生成不同的ConcreteProduct,当然这些ConcreteProduct都是继承自AbstractProduct的。 抽象产品类AbstractProduct :抽象产品是从其他具体产品抽象出来的。抽象产品类只有一个。
Linux常用命令 (1)ls 查看当前目录下所有目录和文件 ls -l会将目录和文件竖着排,并且可以提供文件数据 上图最左边以“d”开头的是目录,以“-”开头的是文件。后面是文件和目录的权限,后面是占了多少空间的大小,然后是创建人和所有人是谁,然后是实际当中所占空间,后面是创建的时间,最右边是目录或文件的名字。 ls -m会适合左右屏幕宽度将目录和文件列出 后面的不常用的不再介绍,用到可以去查 (2)cd 打开目录 cd /打开根目录 cd /dev 打开dev目录(绝对路径) cd /之后再cd dev

Web Service学习总结 - 2016-07-22 18:07:07

Web service到底是什么, 在什么情况下你应该使用Web service:      研究一下当前的应用开发程序 ,你会发现一个绝对的倾向:人们开始偏爱基于浏览器 的客户端应用程序。这当然不是因为客户端能够提供更好的用户界面,而是因为它能够避免花在桌面应用程序 发布上的高成本。发布桌面应用程序 成本很高,一半是因为应用程序安装和配置的问题,另一半是因为客户端和服务器之间通信的问题。      传统的Windows客户应用程序使用DCOM来与服务器进行通信和调用远程对象。配置好DCOM使其在一个大型
咱们不搞一开始就一大堆理论知识介绍,怕把人讲懵了...... 咱们换一个思维方式——"从现象看本质",先说说我们看到了什么,再从看到的现象中提出问题,最后深入寻找答案。 我们看到的 cookie 我自己创建了一个网站,网址为 http://ppsc.sankuai.com 。在这个网页中我设置了几个 cookie : JSSESSIONID , PA_VTIME , skmtutc , test 。 在 chrome 浏览器中打开这个网站,进入开发者模式,点击 Resources 栏 - 选择 cooki
MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。 文档顶层结构: configuration 配置           properties 属性           settings 设置           typeAliases 类型命名           typeHandlers 类型处理器           objectFactory 对象工厂           plugins 插件           envir
大话设计模式 1 策略模式UML图 2 策略模式的概念 策略模式(Strategy) :它定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到算法的客户。【DP】 3 策略模式和简单工厂模式的比较 简单工厂模式需要让客户端认识 两个类 ,而策略模式和简单工厂结合的用法,客户端就只需要认识 一个类 就可以了,耦合度更低。 4 策略模式解析 策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为 阻塞队列和非阻塞队列 ,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。 注:什么叫 线程安全 ?这个首先要明确。 线程安全的类  ,指的是 类内共享的全局变量的访问必须保证是 不受多线程形式影响的 。如果由于多线程的访问(比如修改、遍历、查看)而使这些变量结
偿还技术债 - 通过重构拯救老代码 尝试去接管一个陈旧的代码库使他成为达成一个可控的状态? 这几年的大型的旧web应用程序开发给了我们如下这些建议。 通过重构去拯救旧代码 松鼠会因为忘记自己把松果放在那里,使得每年多了几千棵松树。类似的,这些事情在项目中都没有什么关系。 你的项目是可以被拯救的 无论代码多么的杂乱,让人疯狂。 但是你的老板让你上了,你要相信不管前路多么曲折坎坷,你总能搞定的! 心无畏惧 公平的说。比起冲进一个四处鲜血还有巨龙守在门口的沼泽地待几年,你更愿意在一片清新的草原上散步。 不幸的是