菜鸟学Linux 第020篇笔记 find命令使用和命令组合条件

简介:

菜鸟学Linux 第020篇笔记  find命令使用和命令组合条件




grep, egrep, fgrep:文本查找


文件查找命令

locate

find


locate

非实时、模糊匹配 查找是根据全系统文件数据库进行的;

updatedb 手动生成文件数据库(注意有可能需要执行很长时间)

优点速度快

find

通过遍历指定目录中的所有文件完成查找

支持众多查找标准

实时查找、精确、速度慢


命令格式

find 查找路径 查找标准 查找到以后的处理动作



查找路径:默认为当前目录

查找标准:默认为指定路径下的所有文件

处理动作:默认为显示


查找标准:

-name 'filename' 对文件做精确匹配

支持通配:

任意长度任意字符

匹配任意单个字符

[] 匹配括号内任意单个字符

-iname  ‘Filename'  文件名匹配不区分大小写

-regex  PATTERN 基于正则表达式进行文件名匹配

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

-group  groupname 

-uid User ID

-gid Group ID

-nouser 没有属主的文件

-nogroup 查找没有属组的文件

-type 查找文件类型

f ordinary file

d direcotry

c 字符设备

b block device

l 符号连接

p 管道设备

s 套接字设备

-size #为数字

[+|-]#k 大于或小于#k

[+|-]#M

[+|-]#G

默认单位byte

-mtime 修改

-ctime 改变

-atime 访问

[+|-]#

-mmin 分钟

-cmin 分钟

-amin 分钟

[+|-]#

find /tmp -atime +30

-perm mode  以权限查找

find /tmp/ -perm 644  精确匹配

find /tmp/ -perm /644  只要有一位匹配就显示 或关系

find /tmp/ -perm -644 只要包含就显示 与关系

处理动作:默认为print

-print  显示

-ls 类似ls -l的形式显示每一个文件的详细

-ok command {} \; {}表示匹配到的 操作每次执行需要确认

-exec command {} \; 两个都是将找到文件执行其它动作,即命令(不需要确认)

find -name "*.sh" -a -perm -111 -exec chmod o-x {} \;


小练习:

1、查找/var目录下属主为root并且属组为mail的所有文件。

2、查找/usr目录下不属于root,bin,或student的文件;

3、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;

4、查找当前系统上没有属主或属组且最近一天内曾被访问过的文件,

   并将其属主属组改为root;

5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中

6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;


德·摩根定律

非(P 且 Q) = (非 P) 或 (非 Q)

非(P 或 Q) = (非 P) 且 (非 Q)




Key

1. find /var -user root -a -group mail -a可加可不加


2. find /var -not -user root -o -not -user bin -o -not -user student

find /var -not \( -user root -a -not -user bin -a -not -user student )两种解法


3. find /etc -mtime -7 -not -user root -a -not -user student

find /etc -mtime -7 -not \( -user root -o -user tom \)


4. find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;

5. find /etc -size +1 >> /tmp/etc.largefiles


6. find /etc -not -perm /222


写命令错误总结:

1、用括号括起来的内容要加转义字符\ 且括号后不可紧跟参数

2、参数前要记得加-

3、要牢记德摩根定律







组合条件查找

-a  与关系

-o 或关系

-not  非

e.g.   find /tmp -nouser -a type d -ls

find /tmp/ -nouser -o -type d -ls 

find /tmp -not -type d

find /tmp -not -type d -a -not -type s -ls

德·摩根定律

非(P 且 Q) = (非 P) 或 (非 Q)

非(P 或 Q) = (非 P) 且 (非 Q)





测试条件:

整数条件

-le

-lt

-ge

-gt

-eq

-ne

字符测试

==

!=

>

<

-n

-z

文件测试

-e

-f

-d

-r

-w

-x

组合测试条件

-a 与关系

-o 或关系

! 非关系

if [ $# -gt 1 -a $# -le 3]

 [ $# -gt 8 -o $# -le 2]

[ $1 == 'Q' -o $1 == 'q' -o $1 == 'quit' -o $1 == 'Quit']

Script 1

求1-100所有偶数和奇数的和.

Key 1

#!/bin/bash

#

declare -i EVENSUM=0

declare -i ODDSUM=0


for I in {1..100}; do

  if [ $[$I%2] -eq 0 ]; then

EVENSUM+=$I

  else

ODDSUM+=$I

  fi

done

echo "odd=$ODDSUM even=$EVENSUM"

本文转自Winthcloud博客51CTO博客 ,原文链接http://blog.51cto.com/winthcloud/1865713如需转载请自行联系原作者


Winthcloud

相关文章
|
4天前
|
Linux
Linux(5)WIFI/BT调试笔记
Linux(5)WIFI/BT调试笔记
20 0
|
5天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
5天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
1天前
|
监控 Linux Windows
50个必知的Linux命令技巧,你都掌握了吗?(下)
50个必知的Linux命令技巧,你都掌握了吗?(下)
|
2天前
|
Linux Shell Windows
Linux 常用基本命令
Linux 常用基本命令
|
2天前
|
Ubuntu Linux Shell
linux免交互登陆远程主机并执行命令(密钥对和Expect)
linux免交互登陆远程主机并执行命令(密钥对和Expect)
|
2天前
|
Linux
【Linux】常用命令
【Linux】常用命令
23 0
|
3天前
|
安全 Ubuntu Linux
Linux 网络操作命令Telnet
Linux 网络操作命令Telnet
16 0
Linux 网络操作命令Telnet
|
4天前
|
Linux 数据安全/隐私保护
Linux常用命令实例带注释
Linux常用命令实例带注释
30 0
|
4天前
|
Linux 开发工具 数据安全/隐私保护
Linux(19)常用解压命令记录
Linux(19)常用解压命令记录
9 0