linux 查找目录中的大文件
阅读原文时间:2023年08月22日阅读:2

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