linux之find

find

  • 按照文件名称查找 -name ""

  • 查找文件、目录 -type f / -type d

  • 按照文件、目录大小 -size

  • 按照文件、目录时间 -atime -ctime

  • 文件类型 -type f d l c(dev/null dev/zero) b(磁盘、光盘)

1.查找大文件

[root@m01 var]# find / -type f -size +1G 2>/dev/null
/proc/kcore
/opt/bigfile/1.txt

2.查找大目录下的小文件

find /opt/ -type d -size +1M

3.查找其它类型文件

find /opt/ -type l b c

4.在指定目录下,查找文件或查找目录 -o

[root@m01 opt]# find /opt/ -type d -o -type f
/opt/
/opt/doc
/opt/bigfile
/opt/rm.sh

# 忽略文件大小写
[root@m01 opt]# find /opt/ -iname "*.sh" -o -iname "*.txt"
/opt/file.SH
/opt/f1.txt
/opt/f2.txt
/opt/f3.txt
/opt/f4.txt
/opt/f5.txt
/opt/f6.txt
/opt/f7.txt
/opt/f8.txt
/opt/f9.txt
/opt/f10.txt
/opt/rm.sh

5.使用并且和或者查找文件 -a

[root@m01 opt]# find /opt/ -name "*.sh" -a -type f
/opt/rm.sh

6.不区分大小写使用 -iname

[root@m01 opt]# find /opt/ -iname "*.sh"
/opt/file.SH
/opt/rm.sh

7.按照深度等级查找

[root@m01 opt]# find /opt/ -maxdepth 1 -name "*.txt"
/opt/f1.txt
/opt/f2.txt

8.查找出等于10M或者大于10M的文件

[root@m01 opt]# find / -type f -size 10M -o -size +10M 2>/dev/null
/boot/initramfs-0-rescue-e61ca9948a744df2a76bb612a2952399.img
/boot/initramfs-3.10.0-1160.el7.x86_64.img
/proc/kcore
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1

9.查找出文件大于5M 并且小于15M

[root@m01 opt]# find / -type f -size +5M -a -size -15M 2>/dev/null
/boot/vmlinuz-3.10.0-1160.el7.x86_64
/boot/vmlinuz-0-rescue-e61ca9948a744df2a76bb612a2952399
/run/log/journal/e61ca9948a744df2a76bb612a2952399/system.journal
/sys/devices/pci0000:00/0000:00:0f.0/resource2

10.查找出大于1M的目录 如果目录大于1M 说明下面已经存在5万+的小文件

[root@m01 opt]# find / -type d -size +1M
/opt

[root@m01 opt]# ll -dh /opt/
drwxr-xr-x. 4 root root 1.2M Nov 18 10:52 /opt/

[root@m01 opt]# du -sh /opt/
1.9M	/opt/

11.find 按照时间查找

语法格式:
三种时间:
atime: 访问时间
mtime: 文件修改时间
ctime: 文件属性修改时间
		 find  ./ -mtime +7   # 7天前修改过的文件
		 find ./ -mtime  -7   # 7天内修改过的文件
		 find ./ -mtime  0     # 24小时内被修改过的文件
		 
# 查找24小时内 修改过的文件		 
find / -type f -mtime 0		 

时间查找的作用:
1.大于7天或者30天前的文件不用了需要备份或者删除
2.系统中毒 文件被篡改。

笔试题: 查找/data目录下所有的普通文件修改时间大于30天前的然后删除
find /data -type f -mtime +30

12.将find的结果交给其他命令

三种执行方式:
第一种: find找到的文件交给  cat rm  cp mv  tar命令

# 在当前目录下,查找*.txt 文件内容
[root@m01 opt]# find ./ -type f -name "*.txt" -exec cat {} \;
hello sameen
[root@m01 opt]# cat `find ./ -type f -name "*.txt"`
hello sameen
[root@m01 opt]# find ./ -type f -name "*.txt" |xargs cat
hello sameen

tip :xargs后面所有的别名失效

# 查找名称3.txt的文件然后删除
[root@m01 opt]# find ./ -type f -name "3.txt" |xargs rm -f
[root@m01 opt]# find ./ -type f -name "3.txt" -exec rm -f {} \;
[root@m01 opt]# rm -f `find ./ -type f -name "3.txt"`


# 查找id.txt 复制到/opt
[root@m01 ~]# find ./ -type f -name "id.txt" -exec cp {} /opt/ \;
[root@m01 ~]# find ./ -type f -name "id.txt" |xargs -i cp {} /opt/
[root@m01 ~]# cp `find ./ -type f -name "id.txt"` /opt/

# 查找当前目录下所有txt文件并打包
[root@m01 ~]# find ./ -type f -name "*.txt" -exec tar zcvf txt.tar.gz {} \;
./1.txt
./2.txt
./id.txt
./w.txt
[root@m01 ~]# find ./ -type f -name "*.txt" |xargs -i tar zcvf txt.tar.gz {}
./1.txt
./2.txt
./id.txt
./w.txt

# 查找txt mv到/opt下
[root@m01 ~]# find ./ -type f -name "*.txt" |xargs -i mv {} /opt
[root@m01 ~]# find ./ -type f -name "*.txt" -exec mv {} /opt \;

posted @ 2024-11-18 22:15  被时光移动的城市  阅读(2)  评论(0编辑  收藏  举报