linux找到目录以*.结尾文件,linux文件查找利器 非find莫属

一、find语法

Usage:find PATHNAME [-option] [-exec|-ok command] {} \;

PATHNAME:查找的路径名

[option]:可选择要匹配的参数

[-exec|-ok command]:将查找的文件执行command操作

{}:查找到的文件名

\;:反斜杠代表转义,分号代表结束符

二、find参数

-name

按文件名字查找

-perm

按文件权限查找

-user

按文件属主查找

-group

按文件属组查找

-nouser

查找无有效属主的文件,即文件的属组在/etc/groups中不存在

-nogroup

#查找无有效属组的文件,即文件的属主在/etc/groups中不存在

-mtime(mmin)  -n +n

按文件更改时间来查找文件,-n指n天(分钟)以内,+n指n天(分钟)以前

-atime(amin)  -n +n

按文件访问时间来查找文件,-n指n天(分钟)以内,+n指n天(分钟)以前

-ctime(cmin)  -n +n

按文件创建时间来查找文件,-n指n天(分钟)以内,+n指n天(分钟)以前

-never f1 !f2

查找更改时间比f1新但比f2旧的文件

-type [b| d| c| p| l| f]

查找块设备,目录,字符设备,管道、符号链接、普通文件

-size n[c]

查长度为n块[或n字节]的文件

-depth

查找于某一类型文件系统中的文件,这些文件系统类型通常可在/etc/fstab中找到

-mount

查文件时不跨越文件系统mount点

-follow

如果遇到符号链接文件,就跟踪链接所指的文件

-prune

忽略某个目录,如果同时使用了-depth选项,那么-prune选项将被find命令忽略。

三、find案列

1、查找指定目录下大于300M的文件,并将其移动到指定的路径中

# find ~ -size +300M

# find ~ -size +300M -exec mv {} ~/sql/ \;

2、查找指定目录下大于300M的文件,并将其删除的两种方式

# find ./ -size +300M -delete

# find ./ -size +300M -exec rm -rf {} \;

3、查找指定目录下大于1G而小于1.5G的文件

# find ./ -size +1G -size -1.5G

4、查找指定目录下非.sh结尾的文件的两种方法

# find ./ -not -name '*.sh'

# find ./ ! -name '*.sh'

5、删除7天前对数据库的备份文件

# find /bakcup/ -type f -name '*.sql' -mtime +7 -exec rm -rf {} \;

6、查找当前目录下以.sh结尾的文件,但是排除子目录为script目录下的文件

# find . -path './script' -prune -o -name '*.sh'

7、查找当前目录下以.py结尾的文件,并将其修改为.pyc

# find ./ -name '*.py' -exec mv {} '{}c' \;

8、查找当前目录下所有文件,并把文件中的hello字符串替换成Hello

# echo 'hello world!' > test01.txt

# echo 'hello teacher!' > test02.txt

# find ./ -type f -exec sed -i 's@hello@Hello@g' {} \;

四、find搭配日志重点阐述

1、时间搜索

atime(access time):访问时间;指的是文件最后读取的事件,可以使用touch命令更改当前时间

ctime(change time):变更时间;指的是文件本身最后被变更的事件,变更动作是chmod、chgrp、mv等

mtime(modify time):修改时间,指的是文件内容最后被修改的事件,修改动作echo重定向、vim等

2、时间语法

find PathName {-atime/-ctime/-mtime/-amin/-cmin/-mmin} [-/+]num

第一个参数:查找文件的路径名

第二个参数:前面的字母a、c、m分别表示访问、变更、修改;time为日期,min为分钟

第三个参数:不该符号表示符合这个值得,'-'表示以内的,'+'表示以前的

3、时间小练习

查找当前目录中,当天被访问过的文件:时间单位为day

# find ./ -atime 0

查找当前目录中,距离此刻5分钟以前10分钟以内被修改过的文件:时间单位为min

# find ./ -mmin -10 -min +5

另外补充一个额外的命令:xargs

此命令的使用很类似于find的exec参数,比如:

# find ./ -type f | xargs chmod 755

# find ./ -type f | xargs echo '' > /root/filename.log

# find ./ -type f | xargs rm -rf

网上的一篇文章:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值