2018-08-22 10:08:25 sinat_32366329 阅读数 233
  • 嵌入式Linux文件与串口编程

    本课程介绍Linux环境下shell编程,普通文件与设备文件的编程方法,串口介绍与应用编程。 学习条件: 1.C语言编程基础 2.嵌入式Linux开发基础

    7209 人正在学习 去看看 沈寒

grep 关键字 文件名称

 

grep 20184040 catalina.out  命令,在catalina.out文件中查找20184040这个信息

2019-04-28 10:14:01 qq_40772498 阅读数 34
  • 嵌入式Linux文件与串口编程

    本课程介绍Linux环境下shell编程,普通文件与设备文件的编程方法,串口介绍与应用编程。 学习条件: 1.C语言编程基础 2.嵌入式Linux开发基础

    7209 人正在学习 去看看 沈寒

概述

find命令 支持实时查找,精确匹配,通过遍历指定目录中的所有文件完成查找,速度慢,但支持众多查找标准

locate命令

讲find命令之前,先介绍类似的文件查找命令 locate

  • locate 非实时,模糊匹配,全文件系统查找命令,根据全系统文件数据库进行查找,其数据存在/var/lib/mlocate/mlocate.db
  • updatadb 手动生成文件数据库。updatedb is usually run daily by cron(8) to update the default database.

find命令

search for files in a directory hierarchy
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point…] [expression]
使用:find 查找路径 查找标准 查找后的处理运作

  • 查找路径 默认为当前目录
  • 查找标准 默认为指定路径下的所有文件
  • 处理运作 默认为显示

匹配标准

  • -name ‘FILENAME’ 精确查找
  • -iname ‘FILENAME’ 不区分大小写匹配查找
  • -regex PATTERN 根据正则表达式进行文件名匹配
  • -user USERNAME 根据属主查找
  • -group GROUPNAME 根据属组查找
  • -uid/gid
  • -nouser 没有属主的文件
  • -type 根据文件类型
  • -size 根据文件大小
  • 根据时间戳
  • -perm 根据文件权限

Tip1 find 常通过文件通配符查找文件,用正则表达式较少

  • *匹配任意长度的任意字符
  • ? 任意单个字符
  • [ ]指定范围内的单个字符

Tip2 若一个用户删除,但是此前用户创建的文件不会删除,那么其属主是谁?
其文件的属主是其原用户的id号

Tip3 -type 文件类型

  • f 普通文件
  • d 目录
  • c 字符文件
  • l 链接文件
  • p 管道文件
  • s 套接字文件

Tip4 -size 文件大小

  • [+|-]#M
  • [+|-]#G
  • [+|-]#k
  • +大于 -小于 不添加 精确

Tip5 文件时间戳查找

  • -mtime [+|-]# 最近一次修改时间,默认天

  • -ctime [+|-]# 最近一次改变时间

  • -atime [+|-]# 最近一次访问时间

  • -mmin [+|-]# 默认分

  • -cmin [+|-]#

  • -amin [+|-]#

Tip6 -perm MODE
/MODE 内部有一个满足 -MODE 同时满足

find ./  -perm -001  查找其他用户有执行文件的文件
find ./ -perm -007 查找其他用户有读写执行权限的文件

执行动作 action

  • -print 显示
  • -ls 类似ls -l
  • -ok COMMAND {} ; (;表示结尾标志 {} 文件占位符) 每个操作都要用户确认
  • -exec COMMAND {} ; 区别 -ok 每个操作都不需要用户确认
find ./ -perm  -006 -exec chmod o-w {} \;  查找其他用户有写权限的文件,并将其他用户写权限去掉
find ./ -type d -ok chmod +x {} \; 查找普通文件,将其增加写权限
find ./ -perm -020 -exec mv {} {}.new \; 将组用户有写权限和执行权限的文件,重命名为xxx.new
find /home -name "*.sh" -a -perm -111 -exec chmod o-x {} \;

练习

1.查找/var 目录下属主为root并且属组为mail的所有文件
find /var -user root -group mail
2.查找/tmp目录下不属于root,bin或者student的文件
find /tmp -not -user root -a -user bin -a student
3.查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件
find /tmp -mtime -7 -a -not -user root
4.查找当前系统上没有属主或属组且最近一天内曾被访问过的文件,并将其属组属主均修改为root
find / -nouser -nogroup -atime -1 -exec chown root:root {} ;
5.查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefile文件中
find /etc -size 1M -exec echo {} >>/tmp/etc.largerfile ;
find /etc -size 1M >> /tmp/etc.largerfile
6.查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息
find /etc -not -perm /222 -ls

Last

find 常搭配 xargs 命令 从标砖输入接收命令并执行的

find /etc -size +1M | xargs echo >> /tmp/etc.largerfile
find /etc -size +1M -exec echo {} >> /tmp/etc.largerfile
2015-01-29 13:26:00 WiseWolf_Life 阅读数 340
  • 嵌入式Linux文件与串口编程

    本课程介绍Linux环境下shell编程,普通文件与设备文件的编程方法,串口介绍与应用编程。 学习条件: 1.C语言编程基础 2.嵌入式Linux开发基础

    7209 人正在学习 去看看 沈寒
grep, egrep, fgrep: 文本查找


文件查找:
locate:
非实时,模糊匹配,查找是根据全系统文件数据库进行的;
# updatedb, 手动生成文件数据库
速度快


find:
实时
精确
支持众多查找标准
遍历指定目录中的所有文件完成查找,速度慢
find 查找路径 查找标准 查找到以后的处理运作
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
处理运作:默认为显示


匹配标准:
-name 'FILENAME':对文件名作精确匹配
文件名通配:
*:任意长度的任意字符
?
[]
-iname 'FILENAME': 文件名匹配时不区分大小写
-regex PATTERN:基于正则表达式进行文件名匹配

-user USERNAME: 根据属主查找
-group GROUPNAME: 根据属组查找

-uid UID: 根据UID查找(如果用户或者组删除,文件就会使用UID,GID)
-gid GID: 根据GID查找

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


-type 
f: 普通文件
d
c
b
l
p
s

-size [+|-] (注意:+10k -> >10k,默认字节)
#k
#M
#G

eg:find /etc -size +100k -ls
组合条件:
-a
-o
-not 
eg:find /etc -size +100k -a -user root -a -type f -ls
find /etc -not -type f -ls




stat * 查看当前目录下文件的时间戳信息
根据时间戳查找:

-mtime 修改 
-ctime 改变
-atime 访问
[+|-]#(单位天)
-mmin
-cmin
-amin
[+|-]#(单位分钟)

eg:find /etc/test -amin -5 5分钟以内访问过的文件,stat *来检验
根据权限来查找:
-perm MODE:精确匹配
/MODE: 任意一位匹配即满足条件,OR
-MODE: 文件权限能完全包含此MODE时才符合条件,AND

-644
644: rw-r--r--
755: rwxr-xr-x 包含644,可以
750: rwxr-x--- 不包含,不可以
find ./ -perl -001
查找到以后的处理运作:
-print: 显示
-ls:类似ls -l的形式显示每一个文件的详细
-ok COMMAND {} \; 每一次操作都需要用户确认
-exec COMMAND {} \;

eg:find ./ -type f -ok chmod +x {} \;

这里的{}表示对匹配文件的引用
eg:find ./ -perm -001 -exec mv {} {}.update \;


练习题:
1、查找/var目录下属主为root并且属组为mail的所有文件;
find /var -user root -group mail
2、查找/usr目录下不属于root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)
3、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;
find /etc -mtime -7 -not \ ( -user root -o -user student \)
find /etc -mtime -7 -not -user root -a -not -user student
4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \; 
5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M -exec echo {} >> /tmp/etc.largefiles \;
find /etc -size +1M >> /tmp/etc.largefiles
find /etc -size +1M | xargs echo  >> /tmp/etc.largefiles
6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 -ls


find指令查找后,要执行额外命令的时候,除了-ok,-exec外,还有xargs,

















2017-12-22 10:16:11 qq_27517377 阅读数 136252
  • 嵌入式Linux文件与串口编程

    本课程介绍Linux环境下shell编程,普通文件与设备文件的编程方法,串口介绍与应用编程。 学习条件: 1.C语言编程基础 2.嵌入式Linux开发基础

    7209 人正在学习 去看看 沈寒

liunx查找大于100M的文件
find / -type f -size +100M

liunx查找文件夹命令:
linux查找根目录下文件夹名称叫www.buruyouni.com的目录地址

find / -name www.buruyouni.com  -d

linux查找/var/www/目录下叫index.php的文件

find /var/www/ -name index.php  

查找根目录下所有以".sh"结尾的文件

find  /  -name  *.sh

下载命令:下载 www.91cnm.com/index.php的资源

wget  www.91cnm.com/index.php  (&下载大文件的时候加上&后台执行,断开远程连接还可以下载)

安装软件的时候无法确认操作是否成功,如make / configure / make install 这些命令的时候每次执行完毕可以echo $? 输出 0 则可以确认是安装成功的,输出其他的数字均表示该步骤是失败的!

2017-06-01 15:15:15 zzc1684 阅读数 55
  • 嵌入式Linux文件与串口编程

    本课程介绍Linux环境下shell编程,普通文件与设备文件的编程方法,串口介绍与应用编程。 学习条件: 1.C语言编程基础 2.嵌入式Linux开发基础

    7209 人正在学习 去看看 沈寒

 

Linux查找文件内容的常用命令方法。  

从文件内容查找匹配指定字符串的行:

$ grep "被查找的字符串" 文件名
例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件
grep "thermcontact" */*.in

从文件内容查找与正则表达式匹配的行:
$ grep –e “正则表达式” 文件名

查找时不区分大小写:
$ grep –i "被查找的字符串" 文件名

查找匹配的行数:
$ grep -c "被查找的字符串" 文件名


从文件内容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名


从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行
find / -type f -name "*.log" | xargs grep "ERROR"
例子:从当前目录开始查找所有扩展名为.in的文本文件,并找出包含”thermcontact”的行
find . -name "*.in" | xargs grep "thermcontact"

 

 

Linux 文件查找命令

阅读数 395

博文 来自: zcc1229936385
没有更多推荐了,返回首页