linuxfind命令之exec简单概述

linuxfind命令之exec简单概述

2023年7月26日发(作者:)

linuxfind命令之exec简单概述find是我们很常⽤的⼀个Linux命令,但是我们⼀般查找出来的并不仅仅是看看⽽已,还会有进⼀步的操作,这个时候exec的作⽤就显现出来了。exec解释:-exec 参数后⾯跟的是command命令,它的终⽌是以;为结束标志的,所以这句命令后⾯的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前⾯加反斜杠。{} 花括号代表前⾯find查找出来的⽂件名。使⽤find时,只要把想要的操作写在⼀个⽂件⾥,就可以⽤exec来配合find查找,很⽅便的。在有些操作系统中只允许-exec选项执⾏诸如l s或ls -l这样的命令。⼤多数⽤户使⽤这⼀选项是为了查找旧⽂件并删除它们。建议在真正执⾏rm命令删除⽂件之前,最好先⽤ls命令看⼀下,确认它们是所要删除的⽂件。 exec选项后⾯跟随着所要执⾏的命令或脚本,然后是⼀对⼉{ },⼀个空格和⼀个,最后是⼀个分号。为了使⽤exec选项,必须要同时使⽤print选项。如果验证⼀下find命令,会发现该命令只输出从当前路径起的相对路径及⽂件名。实例1:ls -l命令放在find命令的-exec选项中命令:find . -type f -exec ls -l {} ;输出:[root@localhost test]# find . -type f -exec ls -l {} ;

-rw-r--r-- 1 root root 127 10-28 16:51 ./-rw-r--r-- 1 root root 0 10-28 14:47 ./test4/-rw-r--r-- 1 root root 0 10-28 14:47 ./test4/-rw-r--r-- 1 root root 0 10-28 14:47 ./test4/-rw-r--r-- 1 root root 33 10-28 16:54 ./-rw-r--r-- 1 root root 302108 11-03 06:19 ./-rw-r--r-- 1 root root 25 10-28 17:02 ./-rw-r--r-- 1 root root 37 10-28 17:07 ./-rw-r--r-- 1 root root 0 10-28 14:47 ./test3/-rw-r--r-- 1 root root 0 10-28 14:47 ./test3/-rw-r--r-- 1 root root 0 10-28 14:47 ./test3/[root@localhost test]#说明:上⾯的例⼦中,find命令匹配到了当前⽬录下的所有普通⽂件,并在-exec选项中使⽤ls -l命令将它们列出。实例2:在⽬录中查找更改时间在n⽇以前的⽂件并删除它们命令:find . -type f -mtime +14 -exec rm {} ;

输出:[root@localhost test]# ll总计 328-rw-r--r-- 1 root root 302108 11-03 06:19 -rw-r--r-- 1 root root 33 10-28 16:54 -rw-r--r-- 1 root root 127 10-28 16:51 xrwxrwx 1 root root 7 10-28 15:18 log_ -> -rw-r--r-- 1 root root 25 10-28 17:02 -rw-r--r-- 1 root root 37 10-28 17:07 xr-xr-x 6 root root 4096 10-27 01:58 scfdrwxrwxrwx 2 root root 4096 10-28 14:47 test3drwxrwxrwx 2 root root 4096 10-28 14:47 test4[root@localhost test]# find . -type f -mtime +14 -exec rm {} ;[root@localhost test]# ll总计 312-rw-r--r-- 1 root root 302108 11-03 06:19 xrwxrwx 1 root root 7 10-28 15:18 log_ -> xr-xr-x 6 root root 4096 10-27 01:58 scfdrwxrwxrwx 2 root root 4096 11-12 19:32 test3drwxrwxrwx 2 root root 4096 11-12 19:32 test4[root@localhost test]#

说明:在shell中⽤任何⽅式删除⽂件之前,应当先查看相应的⽂件,⼀定要⼩⼼!当使⽤诸如mv或rm命令时,可以使⽤-exec选项的安全模式。它将在对每个匹配到的⽂件进⾏操作之前提⽰你。实例3:在⽬录中查找更改时间在n⽇以前的⽂件并删除它们,在删除之前先给出提⽰命令:find . -name "*.log" -mtime +5 -ok rm {} ;输出:[root@localhost test]# ll总计 312-rw-r--r-- 1 root root 302108 11-03 06:19 xrwxrwx 1 root root 7 10-28 15:18 log_ -> xr-xr-x 6 root root 4096 10-27 01:58 scfdrwxrwxrwx 2 root root 4096 11-12 19:32 test3drwxrwxrwx 2 root root 4096 11-12 19:32 test4[root@localhost test]# find . -name "*.log" -mtime +5 -ok rm {} ;< rm ... ./log_ > ? y< rm ... ./ > ? n[root@localhost test]# ll总计 312-rw-r--r-- 1 root root 302108 11-03 06:19 xr-xr-x 6 root root 4096 10-27 01:58 scfdrwxrwxrwx 2 root root 4096 11-12 19:32 test3drwxrwxrwx 2 root root 4096 11-12 19:32 test4[root@localhost test]#说明:在上⾯的例⼦中, find命令在当前⽬录中查找所有⽂件名以.log结尾、更改时间在5⽇以上的⽂件,并删除它们,只不过在删除之前先给出提⽰。 按y键删除⽂件,按n键不删除。实例4: -exec中使⽤grep命令命令:find /etc -name "passwd*" -exec grep "root" {} ;输出:[root@localhost test]# find /etc -name "passwd*" -exec grep "root" {} ;root:x:0:0:root:/root:/bin/bashroot:x:0:0:root:/root:/bin/bash[root@localhost test]#说明:任何形式的命令都可以在-exec选项中使⽤。 在上⾯的例⼦中我们使⽤grep命令。find命令⾸先匹配所有⽂件名为“ passwd*”的⽂件,例如passwd、、,然后执⾏grep命令看看在这些⽂件中是否存在⼀个root⽤户。实例5:查找⽂件移动到指定⽬录命令:find . -name "*.log" -exec mv {} .. ;输出:[root@localhost test]# ll总计 12drwxr-xr-x 6 root root 4096 10-27 01:58 scfdrwxrwxr-x 2 root root 4096 11-12 22:49 test3drwxrwxr-x 2 root root 4096 11-12 19:32 test4[root@localhost test]# cd test3/[root@localhost test3]# ll总计 304-rw-r--r-- 1 root root 302108 11-03 06:19 -rw-r--r-- 1 root root 61 11-12 22:44 -rw-r--r-- 1 root root 0 11-12 22:25 [root@localhost test3]# find . -name "*.log" -exec mv {} .. ;[root@localhost test3]# ll总计 0[root@localhost test3]# cd ..[root@localhost test]# ll总计 316-rw-r--r-- 1 root root 302108 11-03 06:19 -rw-r--r-- 1 root root 61 11-12 22:44 -rw-r--r-- 1 root root 0 11-12 22:25 xr-xr-x 6 root root 4096 10-27 01:58 scfdrwxrwxr-x 2 root root 4096 11-12 22:50 test3drwxrwxr-x 2 root root 4096 11-12 19:32 test4[root@localhost test]#实例6:⽤exec选项执⾏cp命令命令:find . -name "*.log" -exec cp {} test3 ;输出:[root@localhost test3]# ll总计 0[root@localhost test3]# cd ..[root@localhost test]# ll总计 316-rw-r--r-- 1 root root 302108 11-03 06:19 -rw-r--r-- 1 root root 61 11-12 22:44 -rw-r--r-- 1 root root 0 11-12 22:25 xr-xr-x 6 root root 4096 10-27 01:58 scfdrwxrwxr-x 2 root root 4096 11-12 22:50 test3drwxrwxr-x 2 root root 4096 11-12 19:32 test4[root@localhost test]# find . -name "*.log" -exec cp {} test3 ;cp: “./test3/” 及 “test3/” 为同⼀⽂件cp: “./test3/” 及 “test3/” 为同⼀⽂件cp: “./test3/” 及 “test3/” 为同⼀⽂件[root@localhost test]# cd test3[root@localhost test3]# ll总计 304-rw-r--r-- 1 root root 302108 11-12 22:54 -rw-r--r-- 1 root root 61 11-12 22:54 -rw-r--r-- 1 root root 0 11-12 22:54 [root@localhost test3]#以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

发布者:admin,转转请注明出处:http://www.yc00.com/news/1690363989a338377.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信