作用: 根据不同的文件类型查找出想要的文件
语法结构:
find 在哪里找 找什么类型的 # 格式1
find /data f
find /data 按照名称查找 # 格式2
【1】、常用文件类型
文件类型:
f # 表示普通文件
d # 表示目录
l # 表示链接文件
c # 表示字节设备
b # 表示块设备 /dev/sda 磁盘 光驱
1、/dev/urandom
字节设备:
urandom #作用 不停的往外吐 没啥用
[root@oldboyedu ~]# ll /dev/urandom
crw-rw-rw- 1 root root 1, 9 11月 16 12:29 /dev/urandom
2、/dev/null
/dev/null #作用 可以将命令的结果定向到此文件 空 类似黑洞 只吃不拉
[root@oldboyedu ~]# echo hehe > /dev/null
[root@oldboyedu ~]# cat /dev/null
[root@oldboyedu ~]# echo hehe >> /dev/null
[root@oldboyedu ~]# cat /dev/null
作用: 写脚本执行命令的时候,会根据自己想要输出的内容来定义输出格式。
[root@oldboyedu ~]# ping -c1 -W1 www.sina.com &>/dev/null
[root@oldboyedu ~]# echo $?
0
[root@oldboyedu ~]# ping -c1 -W1 www.sinsssssssssa.com &>/dev/null
[root@oldboyedu ~]# echo $?
2
# shell脚本
ping -c1 -w1 www.baidu.com &>/dev/null
if [ $? -eq 0 ]; then
echo "百度在线"
else
echo "百度不在线"
fi
3、/dev/zero
[root@kylin-xu ~]# dd if=/dev/zero of=./1.txt bs=1M count=1000
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,16.5751 s,63.3 MB/s
[root@kylin-xu ~]# ll 1.txt
-rw-r--r-- 1 root root 1048576000 11月 13 10:43 1.txt
[root@kylin-xu ~]# ll 1.txt -h
-rw-r--r-- 1 root root 1000M 11月 13 10:43 1.txt
dd # 命令
if # input file 输入文件 /dev/zero输入内容
of # ouput file 输出到哪个文件 1.txt 中
bs # 每次读取的大小 bs=1M 每次在/dev/zero中读取1M的数据
count # 总共读多少次
#通过dd生成一个10M的文件
[root@oldboyedu ~]# dd if=/dev/zero of=./2.txt bs=1M count=10
【2】、查找文件
find文件查找
作用: 查找文件
1.查找大文件
2.小文件多的
inode号,一个文件最少占用一个inode和一个block
相当于一本书的索引,一本书的目录有限制的 比如200个
3.模糊查找
4.按照时间查找
查看inode使用
[root@kylin-xu ~]# df -i
文件系统 Inodes 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs 246341 475 245866 1% /dev
tmpfs 250387 1 250386 1% /dev/shm
tmpfs 250387 721 249666 1% /run
tmpfs 250387 17 250370 1% /sys/fs/cgroup
/dev/mapper/klas-root 20066304 124968 19941336 1% /
tmpfs 250387 12 250375 1% /tmp
/dev/mapper/klas-backup 9795584 8 9795576 1% /backup
/dev/sda1 524288 340 523948 1% /boot
tmpfs 250387 6 250381 1% /run/user/0
1、安装文件类型进行查找
find:
find ./ -type f # 按照文件类型查找
find ./ -type f -o -type d # 使用或者关系查找
-o or # 或者
-a and# 并且 默认就是并且关系
案例1.find按照文件类型查找出所有的普通文件
[root@kylin-xu find]# find ./ -type f
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
./a.txt
./b.txt
案例2.查找出所有的目录文件
[root@kylin-xu find]# find ./ -type d
./
./test-1
./test-2
./test-3
其他类型查找
find / -type l
find / -type b
find / -type c
案例3.查找出文件或者是目录的
[root@kylin-xu find]# find ./ -type f -o -type d
./
./test-1
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./test-2
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
./a.txt
./b.txt
./test-3
2、按照文件名字进行查找
案例1.查找出文件名称1.txt的
[root@kylin-xu find]# find ./ -name 1.txt
./test-1/1.txt
案例2.不区分大小写使用 -iname
[root@kylin-xu find]# find ./ -iname 1.txt
./test-1/1.txt
./test-2/1.TXT
案例3.使用通配符 * 表示所有,?表示一个字符
[root@kylin-xu find]# find ./ -name "[21].txt"
./test-1/1.txt
./test-1/2.txt
[root@kylin-xu find]# find ./ -name "[0-9].txt"
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
[root@kylin-xu find]# find ./ -name "[0-9a-Z].txt"
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./a.txt
./b.txt
[root@kylin-xu find]# find ./ -name "?.txt"
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./a.txt
./b.txt
[root@kylin-xu find]# find ./ -name "*.*"
./
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
./a.txt
./b.txt
./12.txt
3、find使用并且和或者查找文件
案例1.查找出普通文件并且名称为1.txt的
[root@kylin-xu find]# find ./ -type f -a -name 1.txt
./test-1/1.txt
案例2.查找出目录并且名称是test-1
[root@kylin-xu find]# find ./ -type d -a -name test-1
./test-1
案例3.查找出文件名称*.txt 或者 *.log
[root@kylin-xu find]# find ./ -name "*.txt" -o -name "*.log"
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./a.txt
./b.txt
./12.txt
案例4.按照深度等级查找
[root@kylin-xu find]# find ./ -maxdepth 1 -name "*.txt" -o -name "*.log"
./a.txt
./b.txt
./12.txt
4、按照inode号查找
[root@kylin-xu find]# ll -i
总用量 0
102615330 -rw-r--r-- 1 root root 0 11月 13 11:36 12.txt
102615328 -rw-r--r-- 1 root root 0 11月 13 11:08 a.txt
102615329 -rw-r--r-- 1 root root 0 11月 13 11:08 b.txt
1781175 drwxr-xr-x 2 root root 84 11月 13 11:55 test-1
34853858 drwxr-xr-x 2 root root 45 11月 13 11:08 test-2
67723713 drwxr-xr-x 2 root root 6 11月 13 11:08 test-3
[root@kylin-xu find]# find ./ -inum 102615330
./12.txt
[root@kylin-xu find]# find ./ -inum 102615330 | xargs rm
[root@kylin-xu find]# ll
总用量 0
-rw-r--r-- 1 root root 0 11月 13 11:08 a.txt
-rw-r--r-- 1 root root 0 11月 13 11:08 b.txt
drwxr-xr-x 2 root root 84 11月 13 11:55 test-1
drwxr-xr-x 2 root root 45 11月 13 11:08 test-2
drwxr-xr-x 2 root root 6 11月 13 11:08 test-3
5、find按照大小查找文件
语法格式:
find ./ -size 10M # 查找出等于10M的文件
find ./ -size +10M # 查找出大于10M的文件
find ./ -size -10M # 查找出小于10M的文件
案例1.查找出大于10M的文件
[root@kylin-xu find]# find ./ -size +10M
./1.txt
案例2.查找出等于10M的文件
[root@kylin-xu find]# find ./ -size 10M
./2.txt
案例3.查找出小于10M的文件
[root@kylin-xu find]# find ./ -size -10M
案例4.查找出等于10M或者大于10M的文件
[root@kylin-xu find]# find ./ -size 10M -o -size +10M
./1.txt
./2.txt
# 注意默认就是并且关系可以省略 -a -o不能省略
案例5.查找出普通文件并且大于10M的文件
[root@kylin-xu find]# find ./ -type f -o -size +10M
案例6.查找出文件大于5M 并且小于15M的
[root@kylin-xu find]# find ./ -type f -a -size +5M -a -size -15M
./2.txt
案例7.查找出大于1M的目录 #一般来说不会存在,如果目录大于1M 说明下面已经存在5万+的小文件
[root@kylin-xu find]# find / -type d -size +1M
统计目录及下所有大小
[root@kylin-xu find]# du /etc/ -sh
25M /etc/
6、按照时间查找文件
语法格式:
三种时间:
atime: 访问时间
mtime: 文件修改时间
ctime: 文件属性修改时间
find ./ -mtime +7 # 7天前修改过的文件
find ./ -mtime -7 # 7天内修改过的文件
find ./ -mtime 0 # 24小时内被修改过的文件
[root@kylin-xu find]# stat 1.txt
文件:“1.txt”
大小:1048576000 块:2048000 IO 块:4096 普通文件
设备:fd00h/64768d Inode:102615330 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2024-11-13 12:03:00.507104942 -0300
最近更改:2024-11-13 12:03:11.399051736 -0300
最近改动:2024-11-13 12:03:11.399051736 -0300
创建时间:-
案例1.查找24小时内被修改过的文件
find / -mtime 0
案例2.查找出修改时间大于30天前的文件
find / -type f -mtime +30
案例3.查找出修改时间大于30天前所有的文件
find / -mtime +30
[root@kylin-xu find]# date -s 20080302
2008年 03月 02日 星期日 00:00:00 -03
[root@kylin-xu find]# touch 2008{1..3}.txt
[root@kylin-xu find]# mkdir 2008{1..3}
[root@kylin-xu find]# ntpdate ntp2.aliyun.com
17 Nov 12:02:02 ntpdate[237947]: step time server 203.107.6.88 offset +527428869.143752 sec
[root@kylin-xu find]# find ./ -mtime +30
./
./20081.txt
./20082.txt
./20083.txt
./20081
./20082
./20083
时间查找的作用:
1.大于7天或者30天前的文件不用了需要备份或者删除
2.系统中毒 文件被篡改。
笔试题: 查找/data目录下所有的普通文件修改时间大于30天前的然后删除
【3】、将find的结果交给其他命令
1、xargs
案例1.找出文件名称3.txt的然后查看里面的内容
[root@kylin-xu find]# find ./ -name 3.txt | xargs cat
aaa
为什么不用ll 因为xargs后面所有的别名失效。
# xargs: 将前面命令执行的结果 甩到所有命令的最后面、
# xargs可以格式化输出 按n列的方式 默认以空格分隔
# |xargs -n1 # 按1列的方式输出内容
案例2.查找名称3.txt的文件然后删除
[root@kylin-xu find]# find ./ -name 3.txt | xargs rm
案例3.查找名称1.txt的文件然后复制到/opt目录
[root@kylin-xu find]# find ./ -name 1.txt | xargs -i cp {} /opt/
[root@kylin-xu find]# ll /opt/1.txt
-rw-r--r-- 1 root root 1048576000 11月 17 12:22 /opt/1.txt
案例4.查找名称1.txt 然后移动到/tmp目录
[root@kylin-xu find]# find ./ -name 1.txt | xargs -i mv {} /tmp/
案例5.拷贝多个文件到/opt目录
find ./ -name "*.txt" | xargs -i cp {} /opt
2、-exec
案例1.交给cat命令
[root@kylin-xu find]# find ./ -name 1.log -exec cat {} \;
aaa
案例2.交给cp动作
[root@kylin-xu find]# find ./ -name 1.log -exec cp {} /opt \;
[root@kylin-xu find]# ll /opt/1.log
-rw-r--r-- 1 root root 4 11月 17 12:31 /opt/1.log
案例3.交给rm动作
[root@kylin-xu find]# find ./ -name *.log -exec rm {} \;
[root@kylin-xu find]# find ./ -name *.log
[root@kylin-xu find]#
案例4.查找出所有大写的.TXT结尾的文件 然后打包成test.tar.gz
[root@kylin-xu find]# find ./ -name *.TXT -exec tar -zcvf test.tar.gz {} \;
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
[root@kylin-xu find]# tar tf test.tar.gz
./test-2/3.TXT
[root@kylin-xu find]# find ./ -name *.TXT | xargs tar zcvf a.tar.gz
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
[root@kylin-xu find]# tar tf a.tar.gz
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
# 如果使用 -exec 去进行压缩,他只会压缩最后查找的内容
# 使用 xargs 进行压缩,就是全部完整的内容,因此在进行压缩操作时我们不会使用 -exec 参数
3、``或$()
案例1.将查找到的文件交给cp命令
cp `find ./ -name "*.txt"` /opt
案例2.将查找到的文件交给ll命令
ll $(find ./ -name "1.txt")
案例3.交给cat命令
cat `find ./ -name "2.txt"`
案例4.拷贝查找到的所有文件到/root
cp $(find ./ -size +10K) /root
案例5.查找到的文件交给rm命令
rm -f $(find ./ -size -10M)
标签:文件,kylin,查找,test,txt,root,find,xu
From: https://www.cnblogs.com/xuruizhao/p/18551624