find

Posted wx622ea1d31aab0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了find相关的知识,希望对你有一定的参考价值。

[TOC]


文件查找命令 find


day21 find选项

## 语法
find [路径] [选项] [表达式] [动作]
动作: -ls 查看详细属性
-delete 删除 都容易出bug

按文件类型查找 -type

## 选项
#1.按文件类型查找 -type
f:普通文件
d:目录
l:软链接
p:管道符
s:安全套接字文件
b:块设备文件
c:字符设备文件


find / -type f #查找 /下面的所有普通文件

按文件大小 -size (xargs)

+num:查找大于指定数大小文件
-num:查找小于指定数大小文件
num:查找指定数大小文件(不是很精准)
# 栗子
查找当前目录大于5k 小于10k的文件
04:21:05 root@miaosen,10.0.0.100:<sub> # find -size +5k -size -10k
./.viminfo
004:21:13 root@miaosen,10.0.0.100:</sub> # du -h .viminfo
8.0K .viminf

## xargs:读取输入数据重新格式化后输出()
默认分隔符是空格
# 选项
-nn:多行输出(第二个n代表阿拉伯数字)
005:04:47 root@miaosen,10.0.0.100:<sub> # cat test1.txt |xargs -n2
1 2
3 4
5 6

-d:自定义以什么为分隔符
005:08:10 root@miaosen,10.0.0.100:</sub> # echo nameXnameXnameX | xargs -d X
name name name

-d -nn
005:08:30 root@miaosen,10.0.0.100:<sub> # echo nameXnameXnameX | xargs -dX -n2
name name
name

-i:指定数据流的位置,将数据流放入中
# 查找当前目录下大于25k小于30k的文件并移动到/tmp下
005:15:52 root@miaosen,10.0.0.100:</sub> # find -type f -size +25k -size -30k |xargs -i mv /tmp
005:16:14 root@miaosen,10.0.0.100:~ # ll
total 0

按文件名-size

-name:严格区分大小写
004:27:38 root@miaosen,10.0.0.100:<sub> # find ./ -name sj
./sj

-iname:不区分大小写
004:27:53 root@miaosen,10.0.0.100:</sub> # find ./ -iname sj
./sj
./SJ

# *任意字符
# 查找不区分大小写sj并前面有任意字符的文件名
004:28:08 root@miaosen,10.0.0.100:<sub> # find ./ -iname *sj
./sj
./SJ
# 查找不区分大小写sj并后面有任意字符的文件名
004:28:50 root@miaosen,10.0.0.100:</sub> # find ./ -iname sj*
./sj
./SJ
./SJ1.txt
# 查找不区分大小写sj并前后有任意字符的文件名
004:28:58 root@miaosen,10.0.0.100:<sub> # find ./ -iname *sj*
./sj
./SJ
./SJ1.txt
./godSJ1.txt

# 满足其中一个条件 -o:or 或
004:36:39 root@miaosen,10.0.0.100:</sub> # find ./ -iname *sj -o -name *1.txt
./sj
./SJ
./SJ1.txt
./godSJ1.txt
./11SJl1.txt

### 两个条件都要满足名字带sj和尾巴有1.txt的文件
004:43:33 root@miaosen,10.0.0.100:~ # find ./ -iname *sj* -name *1.txt
./SJ1.txt
./godSJ1.txt
./11SJl1.tx

按文件时间查找


-atime:文件访问时间查找
-mtimi:文件内容创建,修改时间查找
-ctime:文件属性,修改时间查找

num:查找第N天的文件(不包括今天)
+num:查找第n天之前的所有文件(不包括今天)
-num:查找从今天开始算n天文件

## 一个文件有以下三种时间
# 查看方法 stat 文件名
access time:atime
modify time:mtime
change time:ctime

# 查看三种时间
005:22:23 root@miaosen,10.0.0.100:~ # stat /tmp/test1.txt
File: ‘/tmp/test1.txt’
Size: 25798 Blocks: 56 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33574982 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-04-18 05:15:01.747729323 +0800
Modify: 2022-04-18 05:15:01.748729323 +0800
Change: 2022-04-18 05:16:14.502724735 +0800
Birth: -

按照文件用户和组查找

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


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

多条件组合查找

# 查找/tmp/下的普通文件名字不区分大小写带test文件大小大于1k查找从今天开始到第二天的所有文件
005:48:01 root@miaosen,10.0.0.100:~ # find /tmp/ -type f -iname *test* -size +1k -mtime -2
/tmp/test1.txt

day22 find


按权限查找

-perm
## 权限精确查找
005:54:43 root@miaosen,10.0.0.100:<sub> # ll
total 0
drwxr-xr-x 2 root root 6 Apr 18 05:54 123
-rw-r--r-- 1 root root 0 Apr 18 05:54 31
--w--w--w- 1 root root 0 Apr 18 05:54 sj
005:54:43 root@miaosen,10.0.0.100:</sub> # find -perm 222
./sj

## -权限
# 每个权限位上,都要包含该数字权限的所有权限
006:01:57 root@miaosen,10.0.0.100:<sub> # find -perm -700 |xargs ls -ld
drwxr-xr-x 2 root root 6 Apr 18 05:54 ./123
006:01:59 root@miaosen,10.0.0.100:</sub> # find -perm -755 |xargs ls -ld
drwxr-xr-x 2 root root 6 Apr 18 05:54 ./123
006:02:56 root@miaosen,10.0.0.100:<sub> # find -perm -777 |xargs ls -ld
dr-xr-x---. 3 root root 175 Apr 18 05:54 .
006:03:04 root@miaosen,10.0.0.100:</sub> # find -perm -744 |xargs ls -ld
drwxr-xr-x 2 root root 6 Apr 18 05:54 ./123
006:03:36 root@miaosen,10.0.0.100:<sub> # find -perm -711 |xargs ls -ld
drwxr-xr-x 2 root root 6 Apr 18 05:54 ./123

## /权限
# 总共三个权限位,只要有一个权限位的权限被包含,就可以找到
006:08:48 root@miaosen,10.0.0.100:</sub> # find -perm /644
属主权限位,有一个r或者有一个w就满足条件
属组权限位,有一个r就满足条件
其他用户权限位,有一个r就满足条件

按深度查找

-maxdepth
针对目录层级查找
# 查找/etc/目录下的所有一级和二级目录
006:13:09 root@miaosen,10.0.0.100:~ # find /etc/ -type d -maxdepth 2

find动作

-print:打印查找到的内容到终端上(find命令默认就是打印结果-print)

-ls:查看文件的详细信息 |xargs ls-l或者ls-l$(find xxx)或者ls-l`find xxx`

-delete:删除查找到的文件(bug跟ls,ls看不见的,也删除不掉)并且只能删除空目录
其他删除方法: |xargs rm-fr或者rm-fr$(find xxx)或者rm-fr`find xxx`

-ok:找到文件后,执行后面的bash命令,询问是否要操作 # 语法:-ok 系统命令 \\;
13006:19:03 root@miaosen,10.0.0.100:<sub> # find -type f -ok cp /tmp \\;
< cp ... ./.bash_logout > ? y
< cp ... ./.cshrc > ? n
< cp ... ./.tcshrc > ? n
< cp ... ./.bash_history > ? n
< cp ... ./.lesshst > ? n
< cp ... ./.bashrc > ? n
< cp ... ./.bash_profile > ? n
< cp ... ./.viminfo > ? n
< cp ... ./31 > ? n
< cp ... ./sj > ?

-exec:找到文件后,执行后面的bash命令
# 语法:-exec 系统命令 \\;
13006:22:08 root@miaosen,10.0.0.100:</sub> # find -type f -exec cp /tmp \\;

find多条件

-a:和,并且(默认)
-o:或者
!:取反

以上是关于find的主要内容,如果未能解决你的问题,请参考以下文章

妖精的尾巴中夏是谁

这次,央行玩真的了!2020中国主权数字货币或将加快到来!

笔记-2.带尾巴小球弹跳

妖精的尾巴里,纳兹、露西、艾露莎、格雷都是谁配音的???

Windows 11剥夺了用户自由和数字自主权

BSV应用范例区块链上的自我主权身份