linux常用命令指南——查找文件我最强:find
2.3.2 查找文件我最强:find
2.3.2.1 find查找常用命令示例find / -name 'wfy.txt' # 从根目录下开始查找文件wfy.txt find . -name '*fy.txt' # 当前目录下,查找fy.txt后缀的文件 # “.”表示当前目录,"*"表示任意长度字符 find / -type f -size +500M # 从根目录开始查找,500M以上文件 # / :根目录 # . : 当前目录 # -type f: f为普通文件类型,f改为d则是目录文件,l则是符号链接文件,-type 还有其他参数,不在这里一一列举 # -size +500M :500MB以上 # 一般磁盘空间不够,删除垃圾文件时会使用到此命令 find . -type f -size +1k # 查找当前文件夹下超过1k的文件,注意k是小写。 find . -type f -mtime -30 # 查找当前目录下30天之内修改过的文件 # -mtime:代表修改时间,最常用,类似参数有-atime、-ctime # -atime:代表访问时间,查看过就算 # -ctime:文件状态改变时间 # -30:代表30天以内,30为n,数字自己填写 # +30:30天以前 # 30:距今第30天 find /var/log/ -mtime +30 -name '*.log' # 查找指定目录/var/log/ 下30天以前的log文件 find /etc ! -type f # 查找 /etc 目录下不是普通文件的 文件 # "!":感叹号,取反 find /etc ! -type l -mtime -30 # 查找/etc 目录下不是符号链接文件,并在30天内被修改过的文件 find /etc -maxdepth 1 ! -type l -mtime -30 # 查找/etc 第一层目录下不是符号链接文件的文件,并在30天内被修改过 # -maxdepth : 前面du学过,指定目录层级,-maxdepth 1代表第1层,-maxdepth 2代表延伸到第二层
-maxdepth 可能有点不好理解,所以截了个示例图
2.3.2.2 使用find 组合命令:统计与删除
基本常用的find命令都已经讲完了,再说下运维中可能常用的一个组合命令,利用find删除N天以前的文件或日志。
先用wc -l来统计下log数量,再删除看看
find / -name '*.log' -mtime +300 | wc -l # 从根目录下开始搜索300天之前的log文件,并统计数量 # “|”:管道符,将前面查到的数据作为输入源给后面的命令
第一种删除方式:-exec
find / -name '*.log' -mtime +300 -exec rm {} \; # 查找30天以前的log文件,使用-exec加rm将其删除 # 再使用上面的命令重新查看一次 find / -name '*.log' -mtime +300 | wc -l
第二种删除方式:-ok
find / -name '*.log' -mtime +200 -ok rm {} \; # -ok : 询问删除,y删除,n不删除,回车默认不删除
第三种删除方式:xargs
依次执行查看结果
find / -name '*.log' -mtime +100 | wc -l find / -name '*.log' -mtime +100 | xargs rm -f # xargs : 命令传递参数过滤器,与管道符“|”一同使用,将前面的命令传递给后面的命令使用 find / -name '*.log' -mtime +100 | wc -l
2.3.2.3 find与xargs的组合使用
对于50天前的log文件进行详情查看
find / -name '*.log' -mtime +50 | xargs ls -l # 利用xargs + ls -l 命令来进行文件的详细属性查看
移除50天前的文件
mkdir /logback # 创建根目录下的 /logback文件夹 find / -name '*.log' -mtime +50 | xargs -i mv {} /logback # 将50天前的所有log文件移动到 /logback 文件夹下 # xargs -i + {},将前面查找到的文件都作为参数给mv命令执行 ls -l /logback # 查看 /logback 下所有文件详情
2.3.2.4 find下xargs与exec的区别
区别一:
-exec,是将查找到的结果文件名逐个传递给后面的命令执行,文件多会导致效率低;
xargs,则是一次性传递,效率较高,并可使用-n参数控制传递文件个数。
区别二:
-exec,文件名有空格等特殊字符也照常处理;
xargs,处理特殊的文件名(例如文件名有空格)需要采用特殊的处理方式(find . -name "*edu" -pringt0| xargs -0 ls -l)
验证区别一,示例如下:
find /logback -name '*.log' -exec echo yaomaomao {} \; find /logback -name '*.log' | xargs echo yaomaomao
可以看到使用-exec每次获得一个文件输出一次,xargs则只输出了一行。
xargs还可以用-n参数控制每次输出的文件个数
find /logback -name '*.log' | xargs -n5 echo yaomaomao
可以看到,每行输出5个参数(文件名),不足的行输出剩下的。
验证区别二,示例如下:
touch yaomaomao.txt;touch "yaomaomao centOS 7";ll yaomaomao* # 小技巧:使用“;”分号可以一次性执行多个命令 # 注意:查看和创建带有空格的文件时,使用引号括起来
find . -name "yaomaomao*" -exec ls -lh {} \; # 正常查找出来 find . -name "yaomaomao*" | xargs ls -lh # 可以看到使用此命令报找不到那个文件或目录 find . -name "yaomaomao*" -print0 | xargs -0 ls -lh # 正常查找
其实find还有很多强大的功能,截两张图大家就知道了
这本书就是我开头推荐的《核心系统命令实战》。
公众号注册的比较晚,没有评论功能,所以一般用来发长文。
知识星球相当于技术朋友圈,有问题大家可以提问,讨论。
欢迎关注我的公众号:姚毛毛的博客
欢迎加入我的知识星球,目前免费哦。
知识星球:姚毛毛的私密花园
--------------------------------------------------------
公众号注册的比较晚,没有评论功能,所以一般用来发长文。
知识星球相当于技术朋友圈,有问题大家可以提问,讨论。
欢迎关注我的公众号:姚毛毛的博客
欢迎加入我的知识星球,目前免费哦。
知识星球:姚毛毛的私密花园
[知识星球]
- linux常用命令-查找文件(find/locate)
- find——文件查找命令 linux一些常用命令
- linux中常用的文件查找命令--find命令的用法
- Linux常用命令之文件查找find、locate、grep
- Linux常用命令--文件(夹)查找之find命令
- Linux文件查找命令find,xargs详述
- Linux文件查找命令find,xargs详述
- Linux文件查找命令find,xargs详述
- Linux文件查找命令find,xargs详述
- SHELL学习之一《Linux文件查找命令find,xargs详述》(转)
- Linux文件查找命令find
- [转]Linux中文件查找技术大全(find命令)
- linux,用find命令查找最近修改过的文件
- Linux文件查找命令find,xargs详述05
- Linux文件查找命令find,xargs详述
- Linux文件查找命令find,xargs详述
- Linux文件查找命令find,xargs详述
- Linux查找文件内容的常用命令方法
- linux查找文件命令find
- Linux文件查找命令find,xargs详述