文件查找命令:find

find命令在Linux中常用的用于查找目录和文件,同时也可以调用其他命令执行相应的操作的命令。十分重要

  • 语法格式

    find [path] [expression]
    # path为要查找的路径,绝对路径和相对路径都行
    # expression是要执行的操作
    
  • 常用操作

参数选项说明
-maxdepth levels查找的最大目录级数
-mtime [-n|n|+n]按照文件的修改时间查找
-n:表示文件修改在n天内
n:表示距离现在几天
+n:表示文件修改在n天以前
-atime按照文件的访问时间来查找
-ctime按照文件的状态改变时间来查找
-mmin
-amin
-cmin跟上面三个意思一天,但单位为分钟
-size [±]size[cwbkMG]按文件大小查找,支持使用 +- 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
-name按照名字查找,仅支持*、?、[]等特殊通配符。使用通配符时用双引号引起来,否则会报错
-user按照所属者进行查找
-group按照所属组进行查找
-newer查找更改时间比指定文件新的文件
-path pattern指定路径样式,配合-prune排除指定目录
-type按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)、s(套接字文件)等。
-regex pattern对路径进行正则
-exec对匹配的文件执行shell命令
-prune指定不在某个目录查找
-delete删除匹配文件
取反
-a交集
-o并集

查找文件并删除

find . -name "1.*" -exec rm -rf {} \;
# {} 指代前面匹配的文件

find . -name "1.*" -delete

删除全部文件,但排除部分文件

find . -type f ! -name "10.txt" -exec rm -rf {} \;
# 删除全部文件,但排除10.txt

find . -type f ! \( -name "10.txt" -o -name "9.txt" \) -exec rm -rf {} \;
# 也可以用()括起来,这样就不用使用多个!取反了
# 但()在shell中有特殊意思,所以要使用转义

删除1分钟前创建大于170字节的文件

find . -size +170c -cmin +1 |xargs -i rm -rf {}

排除某个路径

[root@192 ~]# find . -path "./a/b" -prune -o -print
.
./.dbus
./.dbus/session-bus
./.local
./.pki
./.pki/nssdb
./.ssh
./ts
./a
./a/1.txt
./9.txt

# -o后必须接-print参数,不然会多输出一个-path匹配的路径
[root@192 ~]# find . -path "./a/b/c" -prune -o -name "1.txt" -print
./a/b/1.txt
./a/1.txt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值