find是Linux系统中常用的文件查找命令。它可以在文件系统中查找指定条件的文件,并执行相应的操作。语法格式如下:
find [pathname] [options]
pathname: 指定查找的起始目录,默认为当前目录。 options: 指定查找的选项,如-name、-type等。 expression: 指定查找的条件,如文件名、文件类型(f/d)等。
例如,在当前目录下查找文件名为"test.txt"的文件,命令为: find . -name test.txt
另外,find 命令还有很多参数和使用场景,比如-exec(执行命令), -print(打印文件名),-delete(删除), -mindepth(最小目录深度), -maxdepth(最大目录深度)等
实战示例:
1、工作中目录空间不足,需要清理大文件时,可以找大于500M的文件,xargs接收前一个命令执行的结果,ls列出所找出的文件:
find /var/log/glusterfs/ -type f -size +500M | xargs ls -Slh 或者 find /var/log/glusterfs/ -type f -size +500M -print -exec ls -lh {} \;
2、查找30天前的文件
find /var/log/ -type f -mtime +30 -name "*.log";如果需要删除则加 -delete
3、目录中找不到大文件但目录空间未释放时,查找已删除过的文件并清空
for i in `find /proc/*/fd -ls |grep deleted|grep -v '/dev'|awk '{print $11}'`;do `echo ''|sudo tee $i`;done
4、查找出/tmp目录下面修改时间是7天以前,大小在50k到2M之间,并以.log结尾的文件
find /tmp/ -type f -mtime +7 -size +50k -a -size -2M -regex '.*\.log$' +50k 表示大于50k的文件 -2M 表示小于2M的文件
5、查找出/tmp目录下面修改时间是7天以前,大小在50k到2M之间,并以.log结尾的文件,把这些文件复制到/data目录中
find /tmp/ -type f -mtime +7 -size +50k -a -size -2M -name "*.log" | xargs -i cp { } /data 或者
find /tmp/ -type f -mtime +7 -size +50k -a -size -2M -name "*.log" -exec cp { } /data \;或者
cp $(find /tmp/ -type f -mtime +7 -size +50k -a -size -2M -name "*.log") /data
本文来自博客园,作者:Albert_M,转载请注明原文链接:https://www.cnblogs.com/Albert-M/p/17645564.html