find 是咱们很经常使用的一个Linux命令,可是咱们通常查找出来的额并不单单是看看而已,还会有进一步的操做,这个时候exec的做用就显现出来了。shell
exec解释:安全
-exec 参数后面跟的是 command 命令,它的终止是以“;”为结束标志的,因此这句命令后面的分号是不可缺乏的,考虑到各个系统中分号会有不一样的意义,因此前面加反斜杠。 操作系统
{} 花括号表明前面find查找出来的文件名。test
使用find时,只要把想要的操做写在一个文件里,就能够用exec来配合find 查找,很方便的。在有些操做系统中,只容许 -exec 选项执行诸如 ls 或 ls -l 这样的命令。大多数用户使用着一些选项是为了查找旧文件并删除它们。建议再真正执行 rm 命令删除文件以前,最好先用 ls 命令看一下,确认他们是所要删除的文件。 exec 选项后面跟随着所要执行的命令或脚本,而后是一对儿{},一个空格和一个\,最后是一个分号。为了使用 exec 选项,必需要同时使用 print 选项。若是验证一下 find 命令,会发现该命令只输出从当前路径起的相对路径及文件名。grep
实例1:ls -l 命令放在 find 命令的 -exec 选项中command
命令:im
find . -type f -exec ls -l {} \; find 命令匹配到了当前目录下的全部普通文件,并在 -exec 选项中使用 ls -l 命令将它们列出。脚本
这个命令有点坑,不过确实很好用,说它坑是由于我输入的时候 收到提示:find 遗漏 -exec 的参数,^^移动
解决:1.注意 是一对儿{},一个空格和一个\,最后是一个分号删除文件
2. 在 \; 使用 “\;” '\;' 这样把它们引发来。【“引发来”,感受怪别扭的,不过想不出来怎么描述】
实例2:在目录中查找更改时间在n 日之前的文件并删除它们
命令:
find . -type f -mtime +14 -exec rm {} \; 在 shell 中用任何方式删除文件以前,应当先查看相应的文件,必定要当心,当使用诸如 mv 或 rm 命令时,
可使用-exec 选项的安全模式,他将对每一个匹配到的文件进行操做以前提示你。
实例3:在目录中查找更改时间在n日之前的文件并删除它们,在删除以前先给出提示
命令:
find . -name "*.log" -mtime +5 -ok rm {} \; 查找当前目录中全部以 .log 结尾的,更改时间在 5 日以上的文件,并删除它们,而且在删除以前先给出提示。按y 键肯定,n 键 取消。
实例4: -exec 中使用 grep 命令
命令:
find /etc -name "passwd" -exec grep "root" {} \;
任何形式的命令均可以在 -exec 选项中使用。 在上面的例子中咱们使用 grep 命令。find命令首先匹配全部文件名为“passwd”的文件,而后执行 grep 命令查看这些文件中是否存在一个 root 用户。
实例5:查找文件并移动到指定目录
命令:
find . -name "*.log" -exec mv {} .. \; .. 是路径名
实例6:用exec选项执行 cp 命令
命令:
find . -name "*.log" -exec cp {} test3 \; 一不当心又中招了,test3 是个目录,否则cp 不进去。