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 \;

 

posted @ 2018-07-29 22:08  借风拥你  阅读(437)  评论(0编辑  收藏  举报