find命令的用法

关于find命令的用法:

1.首先熟知三个time:

atime:文件被访问/读取时更新的时间

ctime:文件属性或权限被更改时更新的时间

mtime:文件内容被修改时更新的时间

关于这三个时间,mtime被更新时,ctime一定会被更新;这是因为mtime被更新时,元数据一定会发生变化,大小也会发生改变,属性也就被改变了

【用命令stat + 文件/目录可以查看三个时间】

 

2.格式:find [PATH] [option] [action]

参数:

  1. 与时间相关的参数(atime,ctime,mtime,下面以mtime为例)

a)         –mtime n:n天之前的“一天之内”被更改过的文件

b)         –mtime +n:n天之前(不包括n天)被更改过的文件

c)         –mtime –n:n天之内(包括n天)被更改过的文件

d)         –newer file:file是一个存在的文件夹,列出比file还要新的文件名

  1. 与文件权限/名称有关的参数:

a)         –name filename:查找指定目录下名称为filename的文件

b)         –type TYPE: 查找指定目录下类型为TYPE的文件

c)         –size [+-]SIZE:查看比SIZE还大(+)/小(-)的文件

d)         –perm mode:查看文件权限(用数字表示)刚好等于mode的文件

e)         –perm –mode:查看文件权限包括mode的文件(即一个文件权限为0744的文件,使用-perm -0744,4755权限的文件也会被列出来)

f)          –perm +mode:查看包含mode里面任意权限的文件(即一个文件权限为-rwxr-xr-的文件,使用-perm +755,-rw-------权限的文件也会被列出来)
【值得注意的是,find命令会查找子目录,不仅仅局限于当前目录】

  1. exec参数:
    -exec  command:command为其他参数,-exec后面接其他参数来处理找到的结果,不支持命令别名
    例:find / -perm +7000 –exec  ls –l {} \;
    {}代表find找到的内容,find的结果会被放置到{}中
    额外命令从-exec开始到\;结束,由于;在系统环境中有不同的意义,故用\来转义
  2. ok参数:
    -ok command:跟exec一样,只不过在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

3.find与xargs命令结合:

find … … |xargs + 命令:默认把find搜索到的文件/目录呈现称为一行,用空格隔开,如下:
[root@learning tmp]# find /tmp/ -mtime -1 -type f | xargs

/tmp/test1 /tmp/test2 /tmp/test4 /tmp/test3

 

         用几个例子来演示一下:

               1.    [root@learning tmp]# find /tmp/ -mtime -1 -type f | xargs rm –f
         (
把find搜索到的文件列出来,执行rm命令)

                  

2.[root@learning test]# find /tmp/ -mtime -1 -type f | xargs -i mv {} {}.txt

[root@learning test]# ls

test1.txt  test2.txt  test3.txt  test4.txt

(把find搜索到的文件改名为.txt格)
(-i的作用:把过滤出来的文件一个一个的进行操作;如果不加+i,则会变成
mv  test1  test2  test3  test4…
,test4不是文件不能进行操作

3.删除目录中所有文件,只保留某个特定的文件

[root@learning test]# find /tmp/test -type f
/tmp/test/8.txt
/tmp/test/1.txt
/tmp/test/person.txt
/tmp/test/5.txt
/tmp/test/10.txt
/tmp/test/test4.txt
/tmp/test/6.txt
/tmp/test/testing1
/tmp/test/9.txt
/tmp/test/test2.txt
/tmp/test/test3.txt
/tmp/test/2.txt
/tmp/test/3.txt
/tmp/test/testing
/tmp/test/4.txt
/tmp/test/lala
/tmp/test/la
/tmp/test/7.txt

[root@learning test]# find /tmp/test -type f ! -name "10.txt"|xargs rm -f
[root@learning test]# ll
total 0
-rw-r--r--. 1 root adminuser 0 May 25 18:37 10.txt

 

posted @ 2018-04-18 19:59  XQR  阅读(1104)  评论(0编辑  收藏  举报