find用法

什么是find?

假如现在有一个1.txt的文件,要找出来,根本找不到。find是找东西用的,不能找东西里面的内容,只能按照各类方式去查找。

 find (固定的查找)/tmp/(在哪里查找) -name(按什么样的条件) "1.txt" (找谁呢1.txt)

-name 按照文件名字查找

例如:

touch {1..3}.txt   

touch file{1..2}

找出tmp下以1.txt结尾的文件

 

找出tmp下以.txt结尾的文件

 

 ! 取反

find /tmp ! -name "*.txt"    在tmp下找不是以.txt结尾的东西

-i 忽略大小写

例如

touch FILE1          大写的FILE1

find /tmp/ -iname “file1”

-size 按照文件大小查找

例如

find /tmp -size +1M (+就是大于   如果不加+号,就是正常好好的  - 小于)

find /etc -size +5M  查找在/etc/大于5M的文件

find /etc -size 5M   查找正好是5M的文件 

find /etc -size -5M  查找小于5M的文件

空文件  find /tmp -size 0 

 按照修改时间查找

find /etc -mtime +5    五天前

写一个脚本查找最后创建时间是5天前,后缀是*.log的文件并删除。

find / *.log -mtime +5 -exec rm -rf {} \;

-type  按文件类型        f普通文件      d目录

例如

find /tmp -type f   找出在tmp下所有文件

find /tmp -type d   找出在tmp下所有目录(包括隐藏目录)

find /tmp -type f | wc -l  统计tmp下一共有多少个文件

find /tmp/ -name "*.txt" | wc -l  统计tmp下以.txt结尾的文件

【注意】东西找什么都可以,目录文件都能找出来,如果只要文件必须要用-type把类型规定死。

-prem 按照文件权限

find . -perm 644  查找当前目录下,权限为644   (.叫做当前目录)

-o  或者

这个参数可以链接2个条件,只要满足1个就会被找出来

find /tmp/ -name "1.txt" -o -name "2.txt"  在tmp下找出以1.txt结尾或者是以2.txt结尾的东西

find /tmp/ -name "1.txt" -o -size +1M     在tmp下找出以1.txt结尾或者大于1M的东西

find /tmp/ -name "1.txt" -o -perm 644    在tmp下找出以1.txt结尾或者权限是644的东西

-a 并且

find /tmp/ -name “1.txt” -a -type f     在tmp下找名字是1.txt并且它是一个文件

  find /tmp -name "*.txt" -a -type d    在tmp下找出名字是以.txt结尾的,并且它是一个目录

例如

在tmp下建一个大小位3M的10.txt文件

dd if=/dev/zero of=/tmp/10.txt bs=1M count=3

 在/tmp下,找出大于2M并且小于5M的东西并且是文件

find /tmp/ -size +2M -a -size -5M -a type f     -a可以无限往后加

动作

touch {1..20}.txt

find /tmp -name "*.txt" -exec rm -rf {} \;     把20个txt都删了  不要在根下找,找出来删了系统就没了

-exec是固定的叫参数传递,这么查找不一定能找出多少个东西,找出的东西都执行它后面的动作

rm -rf是动作     {}是固定的,后面加路径    \;是固定的,行尾符,结束的意思。

请删除本机没有用的日志,日志路径是/var/log/。这个时候要考虑它的后缀名是什么。

日志就是.log结尾的   删除本机所有的镜像文件.iso   删除本机所有的word文档 .doc

例如

找出在/tmp下以.txt结尾的并且是文件,把它强制拷贝到/srv,并显示过程

中间加v显示过程      -rf强制

find /tmp -name "*.txt" -a -type f -exec cp -rvf {} /srv \;

 例如

找出/tmp下所有的目录然后删除

find /tmp -type d -exec rm -rf {} \; 

在/tmp下找出大于100k的,并且小于200k的文件,然后移动到/srv下

find /tmp -size +100k -a -size -200k -type -f -exec mv {} /srv \;

将/srv 3.txt 移动到/下

find /srv -name "3.txt" -exec mv -vf {} / \;

【注意】在执行后面的动作时,先把它找出来,再做后面的动作。不然容易出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你是我的导航

谢谢您的打赏,您的鼓励。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值