linux shell学习之find

find命令可以用于查找特定的文件和目录。
一、基础用法

find /home/$USER 
会列出用户主目录下的所有文件和目录
find /home/$USER -print
print选项是打印的意思,默认换行打印
find /home/$USER -print0
使用print0会将换行符改为空字符进行输出

二、其他选项
name选项

find /home/$USER -name "*.txt" -print
name选项指定要查找的文件的名称,可以使用具体的名称,
也可以使用正则表达式。
上面的命令会查找用户目录下的所有以.txt结尾的文件。

如果想找到所有以.txt结尾的文件和以.sh结尾的文件,
可以这样写
find /home/$USER \( -name "*.txt" -o -name "*.sh" \)

path选项

find /home/$USER -path "*/hello/*" 
path选项会指定要查找的路径

regex选项

使用regex选项来使用正则表达式进行匹配
find /home/$USER -regex ".*\(\.sh\|\.txt\)"
该操作也会找出用户目录下的所有以.sh和.txt结尾的文件,
这里使用的是BRE(基本正则表达式),所以对()|以及.都使用了转义。

!取反操作

find /home/$USER ! -name "*.txt"
该操作会找到除了以.txt结尾的所有文件

mindepth 和maxdepth

使用这两个选项可以指定find搜索的目录深度
mindepth是最小深度,maxdepth为最大深度
find /home/$USER -mindepth 2 -maxdepth 2 
该操作指定find只在/home/$USER的二级目录中查找文件和目录

type过滤类型

find /home/$USER -type f 
该操作会在/home/$USER 中查找类型为普通文件的文件
类似操作还有
find /home/$USER -type d
查找目录
find /home/$USER -type l
查找链接文件

-atime(访问时间) -mtime(修改时间) -ctime(变化时间)
以天为单位

find /home/$USER -atime +7
查找7天内访问过的文件
find /home/$USER -atime -7
查找7天前访问过的文件
find /home/$USER -atime 7
查找7天前访问的文件

-amin -mmin -cmin
同上,但以分钟为单位

-size

find /home/$USER -size +2k
find /home/$USER -size 2k
find /home/$USER -size -2k
查找大于等于小于2k的文件
除了kb,还有M G等单位大小

delete删除匹配文件

find /home/$USER -size +2k -delete
删除目录下大于2kb的文件

perm文件权限匹配

find /home/$USER -perm 755 
查找文件权限为755的文件

user指定文件所有者

find /home/$USER -user root
查找root用户的所有文件

exec执行选项

find /home/$USER -name "*.c" -exec cat {} \;> all.txt
该命令会将所有.c文件输入到all.txt文件中
{}会代指每个找到的.c文件

prune跳过

find /home/$USER \(-name "*.git" -prune\) -o \(-type f -print\)
该操作会跳过*.git输出所有类型为普通文件的文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值