find用法
一、根据类型查找
mkdir a
cd a
ln -s /etc/sysconfig/selinux ./
touch test
mkdir directory
[root@a a]# ll
drwxr-xr-x 2 root root 4096 7月 28 16:09 directory
lrwxrwxrwx 1 root root 16:10 selinux -> /etc/sysconfig/selinux
-rw-r--r-- 1 root root 0 7月 28 16:08 test
假设本目录下有多种类型的文件,需要查找出来类型除了文件和目录以外的文件
[root@a a]# find ./ ! \( -type f -o -type d \)
需要注意的是需要加() ,()的转义 , !取反
二.根据天数查找 (atime mtime ctime)
#!/bin/bash
mkdir /time_test
for i in {1..10};do
date -s "2018-05-$i 10:00"
cd /time_test
touch time_$i
done
我们生成10个文件,分别从1-10号创建的文件
1.根据创建时间来查找指定天数的以前的文件
从现在的系统时间开始计算,查看3天以前的文件
[root@a time_test]# find ./ -ctime +3
./time_6
./time_5
./time_1
./time_2
./time_3
./time_4
从现在的系统时间开始计算,查看3天以内的文件
[root@a time_test]# find ./ -ctime -3
./
./time_10
./time_9
./time_8
三、根据小时或是分钟查找(cmin mmin amin)
#!/bin/bash
mkdir /time_test
for i in {10..20};do
date -s "$i:00"
cd /time_test
touch time_$i
done
在不同的时间点创建文件
1.查找3小时以前的文件
[root@a time_test]# find ./ -cmin +180
./time_17
./time_13
./time_12
./time_10
./time_14
./time_15
./time_11
./time_16
查找3小时以内的文件
[root@a time_test]# find ./ -cmin -180
./
./time_20
./time_19
./time_18
四、查看内容为空的文件或是空目录(-empty)
find ./ -empty
五、根据权限查找文件(-perm)
find ./ -perm 755
六、-exec
Exec可以接收find查找的结果,并且做二次处理。
根据上边的实例
[root@centos6 time_test]# find ./ -atime -3
./
./time_10
./time_8
./time_9
[root@centos6 time_test]# find ./ -atime -3 -exec mv {} /opt \;
{}代表find查找到结果
\前边必须有空格
最后必须加;
7.根据inode号重命名
在linux中有时候会遇到乱码文件,我们可以根据inode号重命名
[root@centos6 time_test]# find ./ -inum 787402
./time_1
[root@centos6 time_test]# find ./ -inum 787402 -exec mv {} abc \;