linux字符设备文件查找,Linux文件查找介绍

文件查找介绍:

在文件系统上查找符合条件的文件

locate:非实时查找,通过数据库进行查找,效率高,可用于查找比较固定的文件

依赖于/var/lib/mlocate/mlocate.db这个数据库文件,数据库时间点之前创建的文件是可以查找到的,而时间点之后新创建的文件就搜索不到了

更新这个数据库文件:一天更新一次,或者使用updatedb更新这个数据库

模糊搜索:文件路径中带有要查找的字符串,就全搜出来了,搜索的文件全路径

大小写敏感

-i 用于忽略大小写

-n 指定列出前几行 locate -n3 profile

-r 使用正则表达式 locate -n3 -r "\.conf$"(查找包含conf结尾的前三个文件)

find:通过实时查找

实时查找工具,会搜索整个磁盘查找文件

语法:

find [option]...[查找路径][查找条件][处理动作]

查找路径:指定具体目标路径;默认为当前目录

查找条件:可以根据文件名,大小,类型,权限等标准进行查找,默认找出指定路径下的所有文件

处理动作:对符合条件的文件做操作,默认输出到屏幕

options:

指搜索层级,find命令默认搜索递归搜索,每个目录都会进入

-maxdepth level 最大搜索目录的深度,指定目录为第1级,也包括比最大级小的目录

-mindepth level 最小搜索目录的深度,可以与maxdepth结合使用,精确到某一层

根据文件名和inode查找:

-name "文件名称" :支持通配符 *,?,[],[^]

-iname 忽略文件名的大小写

-inum "编号" 根据inode编号去查找文件

-samefile "文件名" 查找相同inode的文件

-inks n  链接数为n的文件

-regex "PATTERN(匹配整个文件的全路径)"

根据属主,属组查找:

-user USERNAME:查找属主为USERNAME的文件,可以与name选项一起用,当要查找属主为USERNAME并且文件名为某些的时候可以一同使用

-group GRPNAME:查找属组为GRPNAME

-uid UserID:查找属主为指定的UID号的文件

-gid GroupID:查找属组为指定的GID号的文件

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

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

根据文件类型查找:

-type TYPE:

f:普通文件

s:套接字文件

d:目录文件

l:符号链接文件

b:块设备文件

c:字符设备文件

p:管道文件

特殊条件:

-prune:剪切的命令,比如说除了某个文件其余的都要,就把-prune写在要剪切的命令后面

-path:指定的目录,与-prune连起来使用

组合条件:

与:-a(默认不用写,多个条件默认就是并且关系)

或:-o

非:-not,!

德丶摩根定律:

(不是A)or(不是B)=不是(A and B)

(不是A)and(不是B)=不是(A or B)

例子:

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)

根据文件大小查找:

-size[+|-]

常用单位:k,M,G,c(byte)

数字:[-1]

如:6k表示(5k-6k),就是大于5k并且小于等于6k

- :[0,数字-1]

如:-6k表示[0-5k]

+ :[数字,未知]

如:+6k表示6k以上,不包括6k

根据时间为条件查找:

默认以天为单位

-atime[+|-]数字,

数字:[+1]

如:3天以上不到4天

+3:4天以上不包括3天

-3:0天到3天不包括3天

-mtime:以修改时间

-ctime:状态修改时间

以分钟为单位:

-amin

-mmin

-cmin

根据权限为条件查找:

-perm [/|-]MODE

MODE:精确匹配,比如find -perm 664 -type f,意思是搜索当前目录下文件类型为普通文件并且权限为664

/MODE:任何一类(u,g,o)对象的权限中有一位能匹配即可,或者的关系,比如:find -perm /664 -type f,意思就是u,g,o任意以为拥有对应的权限就可以匹配

-MODE:表示的并且的关系,每个人都要有对应的权限,0代表不关心不作为搜索条件,比如:find -perm -644 -type,意思就是u,g,o都必须是对应的权限才能够匹配

处理动作:

-print:打印到屏幕,默认行为

-ls:可以显示出文件的属性,相当于"ls -l",以长格式显示

-delete:删除查找到的文件(尽量不要使用)

-fls "文件名":将找到的文件以长格式方式存到一个文件中

-ok commond {}\; :对查找到的每个文件执行由commond指定的命令,对于每个文件执行命令之前,队徽交互式要求用户确认,不想要有确认的时候则将-ok改为-exec;比如:find -name "*.conf" -exec cp {} /root/{}.bak \; 就是将当前目录下的所有conf文件备份到/root下面并且加上.bak为后缀,大括号代表查找到的内容,后面必须要跟"\;"

参数替换xargs

由于很多命令不支持管道来传递参数,而工作中又有使用的必要,所以就产生了xargs命令

有些命令不能处理过多的参数,命令执行时可能会失败,xargs可以用来生成命令后方的参数,正好可以解决

示例:

ls f* | xargs rm (使用ls查出所有以f开头的文件,一个个的传给xargs进行rm处理)

find和xargs格式:find | xargs COMMAND 常见配合(find 搜索出来的文件,会一个一个传给xargs,然后使用xargs后的命令处理)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值