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下所有用户都没有写权限的文件,显示详细信息。

linux我ll查不到usr,Linux学习-文件查寻相关推荐

  1. linux什么命令查设备型号,在Linux命令行中查看系统硬件制造商、型号与序列号的六种方法...

    下面的六种方法都可以获取到 Linux 中的系统硬件制造商.型号与序列号,它们分别是 dmidecode.inxi.lshw./sys.dmesg.hwinfo 命令. 前言 对于 Linux 图形界 ...

  2. linux下怎么查kill某个进程,Linux下查询进程PS或者杀死进程kill的小技巧

    假设我们要kill掉tomcat: 那么我们首先需要tomcat的进程号pid: ps -aux | grep tomcat 记下tomcat的PID后,执行:kill PID(tomcat) 好了, ...

  3. linux命令查找软件,linux指令速查器下载

    linux指令速查器最新版(linux指令查询)是一款最新免费包含linux命令查询.搜索功能的linux命令查询软件,它介绍了超过300条指令的用法,对各种用法做了详细的中文说明,非常适合于新手玩家 ...

  4. linux命令chgrp,Linux命令详解之–chgrp命令 | Linux大学

    摘要 Linux chgrp命令 可以用来变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可. 我们在Linux命令详解之–chown命令 | Linux大学这篇文章中,我们介绍了更改文件 ...

  5. Linux命令速查---kalrry

    Linux命令速查---kalrry 1.shell的作业控制 2.文件基本操作 ls cp mv rm ln 3.目录操作 cd pwd basename dirname mkdir rmdir 4 ...

  6. Linux命令辅助工具,linux命令快查小助手

    linux命令快查小助手是一款使用易语言编写的简单Linux系统快捷键查询工具,支持中文模糊查询,可右键复制命令,查看命令详情,对于使用linux系统的朋友来说非常实用!有需要的小伙伴欢迎来西西下载体 ...

  7. 记一次Linux服务器上查杀木马经历

    ClamAV介绍   ClamAV是一个在命令行下查毒软件,因为它不将杀毒作为主要功能,默认只能查出您计算机内的病毒,但是无法清除,至多删除文件.ClamAV可以工作很多的平台上,但是有少数无法支持, ...

  8. 《Red Hat Linux命令速查》—— 带你玩转字符游戏

    命令行管理,一个玩转字符的战场! 忽隐忽现的光标  神秘莫测的符号  闪转腾挪的玄机  直捣黄龙的快意 能领略这一切的人,只有你--深谙命令行管理之道的系统管理员和软件开发人员! 命令行之于优秀的系统 ...

  9. linux下查看vnc端口_怎样查vnc端口,Linux下根据进程名怎样查端口

    IIS7服务器管理工具是一款免费的远程控制软件,它可以批量管理.定时上传下载.同步操作.数据备份.到期提醒.自动更新.IIS7服务器管理工具适用于Windows操作系统和liunx操作系统:支持Vnc ...

最新文章

  1. 关于JS客户端对服务器控件赋值,Post后不能保留值的解决办法
  2. 软件相关模块与ansible剧本
  3. Spring boot表单提交日期格式
  4. how can you understand the world
  5. 关于前台调用后台事件__doPostBack函数
  6. 利用云数据库 MongoDB ,为你的业务创建单节点实例
  7. 统计学习方法-李航(4)
  8. camera(24)---camera 客观测试 Imatest教程--噪声测试
  9. HP大中华区总裁退休感言(孙振耀 )
  10. php 判断3g,php 3g{WAp}网站编写注意事项
  11. 不拆机更换HG255D的U-BOOT并刷OPENWRT
  12. HTML网页设计制作——响应式网页影视动漫资讯bootstrap网页(9页)
  13. 计算机派位录取,北京幼升小多校划片电脑派位是什么意思
  14. Java IO基础知识
  15. r语言做断轴_手把手教你用R语言做回归后的残差分析
  16. Java基础——IO流
  17. 交通锥,又称锥形路标、锥形筒、红帽子、方尖碑,是一种道路交通隔离警戒设施。
  18. 微型计算机基础知识,第1章微型计算机基础知识
  19. 小实操(3): 利用键盘事件实现小人快跑
  20. Wordpress中文章的特色图像Featured Image究竟存在哪里?

热门文章

  1. HarmonyOS之深入解析通知的使用
  2. iOS之深入解析内存管理MRC与ARC机制
  3. 根据使用频率为 5 个字符设计的哈夫曼编码不可能是( )
  4. 2015年第六届蓝桥杯C/C++ A组国赛 —— 第五题:切开字符串
  5. PTA —— 基础编程题目集 —— 编程题 —— 7-2 然后是几点 (15 分)
  6. 大数据WEB阶段(八)Tomcat服务器安装与详解、HTTP协议详解
  7. 频率计设计——电路部分
  8. 计算机视觉、机器学习、人工智能领域知识汇总
  9. 解决VS2017运行时控制台一闪即逝问题的方法
  10. 【STM32】FreeRTOS编码风格