2023年7月26日发(作者:)
⽂件查找⼯具,sed的基本⽤法及打包⼯具的⽤法### ⽂件查找
- #### locate
⾮实时查找,也叫数据库查找基于(/var/lib/locatedb)
> 默认⼤概每天更新⼀次,如果想⽤locate实时查找,可以⽤命令updatedb升级数据库
备注:如果在⽩天线上服务器⽐较忙最好不要⽤updatadb 命令。(索引构建过程需要历遍整个根⽂件消耗资源⽐较⼤,会耗费时间)
> 优点:速度快,不占⽤内存
> 缺点:常更新的⽂件不⼀定会搜索得到
语法:lacate KEYWORD
会显⽰所有带KEYWORD的⽂件或者⽬录(包括路径中带有KEYRORD的)
⽰例
```
[root@zhangxiao data]# locate /root/87*
/root/87_a
/root/87_jitu
/root/
[root@zhangxiao data]#
```
find
实时查找
优点:⽐较准确
缺点:速度略慢会占⽤内存
语法:find [查找路径] [查找条件] [处理动作]
查找路径:指定具体的⽬录路径,默认为当前路径
查找条件:指定查找的标准,可以以⽂件名、⼤⼩、类型、权限等
处理动作:对符合条件的⽂件做什么操作;默认输出⾄屏幕
默认递归 查看⽂件夹中的⽂件
1.-name “FILENAME”,⽀持使⽤通配符
```
⽰例
[root@zhangxiao etc]# find /root/ -name "87*"
/root/87_a
/root/
/root/87_jitu
[root@zhangxiao etc]#
```
2.-iname "FILENAME"查找⽂件名称不区分⼤⼩写
```
⽰例
[root@zhangxiao ~]# touch IiIiU
[root@zhangxiao ~]# find /root -iname ii*
/root/IiIiU
[root@zhangxiao ~]#
```
"PATTERN" 以PATTERN匹配整个⽂件路径查找字符串⽽不仅仅是⽂件名
``` ⽰例
[root@zhangxiao etc]# find /etc -regex "/etc/i.*"
/etc/inittab
/etc/
/etc/
/etc/inputrc
/etc/init/
/etc/init/
/etc/init/
/etc/init/
/etc/init/
/etc/init/
/etc/init/
/etc/init.d
[root@zhangxiao etc]#
```
根据属主属组查找
1. -user USERNAME以属主为username的⽂件
```
⽰例
[root@zhangxiao data]# find /data -user "zhangxiao"
/data/dir11
/data/dir11/fa1
/data/dir11/passwd
/data/ff2
/data/dd23
/data/23
[root@zhangxiao data]#
```
2. -group GROUPNAME 以属组为指定组的⽂件
```
⽰例
[root@zhangxiao data]# find /data -group xiaoxiao
/data/fa1
/data/23
[root@zhangxiao data]#
```
3. -uid:查找属主为指定UID的⽂件
```
⽰例
[root@zhangxiao data]# find /data -uid "0"
/data
/data/testdir1
/data/testdir1/fa1
/data/testdir1/passwd
/data/testdi1
/data/lost+found
/data/passwd
/data/test1
/data/test1/passwd
[root@zhangxiao data]#
```
4. -gid:查找属组为指定GID的⽂件
```
⽰例 [root@zhangxiao data]# find /data -gid "500"
/data/dir11
/data/dir11/fa1
/data/dir11/passwd
/data/ff2
/data/dd23
[root@zhangxiao data]
```
5. -nouser: 查找没有属主的⽂件
```
[root@zhangxiao xiaoxiao]# find /data -nouser
/data/f33
/data/f30
/data/f32
/data/f31
[root@zhangxiao xiaoxiao]#
```
6. -nogroup:查找没有属组的⽂件
```
根据⽂件类型查找
```
1. -type
f:⽂件
d:⽬录
```
⽰例
[zhangxiao@zhangxiao ~]$find /data -type "d"
/data
/data/dir11
/data/testdir1
/data/testdi1
/data/lost+found
find: `/data/lost+found': Permission denied
/data/test1
[zhangxiao@zhangxiao ~]$
```
l:符号链接
s:套接字⽂件
b:块设备⽂件
c:字符设备⽂件
p:管道⽂件
``` 组合条件
```
-a :与
```
[root@zhangxiao zhangxiao]# find /data -name "f*" -a -user "zhangxiao"
/data/dir11/fa1
/data/fa1
/data/ff2
[root@zhangxiao zhangxiao]#
```
-o :或
-not,-! :⾮
!A -a !B= !(A -o B)
!A -o !B= !(A -a B)
```
⽰例
[root@zhangxiao firmware]# find /etc -size "+1M" -type "f"
/etc/selinux/targeted/policy/policy.24
/etc/selinux/targeted/modules/active/
/etc/gconf/ts/%
[root@zhangxiao firmware]#
```
根据⽂件⼤⼩查找
```
1. -size [+|-]
常⽤单位:K、M、G
(-size 3k:是指⼤于等于2K到3K的⽂件)
(-size -3k:0-2K的⽂件)
(-size +3k:⼤于3K的⽂件)
```
以时间戳为单位
以天为单位的
```
-atime
-ctime
-mtime
(-atime 3⼤于等于3天不到4天 )
(-atime +3 四天之前)
(-atime -3 不到三天 ```
)
以分钟为单位
```
-amin
-cmin
-mmin
```
按权限查找
```
-perm 222精确匹配222
-perm 【+|-】mode
在此种情况下0表⽰不关⼼,7包括1、2、4.
-perm +222 (加号表⽰或者的关系)
-perm -222
(减号表⽰每⼀类对象都需要有这个权限)
```
-maxdepth:查找的最⼤层级
-mindepth:查找的最⼩层级
⽰例
```
[root@zhangxiao zhangxiao]# find /data -maxdepth "1" -size "2k" -ls
12 4 -rw-r--r-- 1 root root 1682 Mar 31 11:18 /data/passwd
[root@zhangxiao zhangxiao]#
```
处理动作:
```
-print:默认的处理动作。输出到屏幕
-ls:对查到的⽂件执⾏ll命令
-delete:删除查找到的⽂件
-fls:查找到的⽂件信息以长格式保存在指定的⽬录中
-ok CMD {};:对查找到的每⼀个⽂件执⾏CMD,执⾏前交互式要求⽤户确认
-exec CMD {};:批量执⾏前⾯的CMD不需要确认
```
find传递查找到的⽂件⾄后边指定的命令是有些命令不能接受这么多参数此时 执⾏命令就会失败,我们可以⽤⼀个⽅法解决
```
find | xargs CMD
指的是⼀条⼀条命令传给CMD
```
find常配合cpio使⽤ cpio
```
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690367234a339032.html
评论列表(0条)