在Linux下使用find命令时,请使用-ok选项以避免意外删除文件,此选项将在删除任何文件之前征求您的许可。最近有朋友提醒我一个比较实用的选项,可以更谨慎地运行find命令,那就是-ok。它的工作方式与-exec类似,除了一个重要区别,这使得find命令在执行指定操作之前请求许可。这是一个例子。如果您使用find命令查找文件并删除它们,您可能会使用以下命令:$find。-namerunme-execrm{}\;当前目录及其子目录中任何名为“runme”的文件都将被立即删除——当然,您有权删除它们。请改用-ok选项,您会看到类似这样的内容,但find命令会在删除文件之前请求许可。回答y表示“是”将允许find命令继续并一个接一个地删除文件。$找到。-namerunme-okrm{}\;?-execdir命令也是一个选项,可用于修改find命令的行为并可能使其更易于控制-execdir。-exec将运行指定的任何命令,-execdir将从文件所在的目录运行指定的命令,而不是从运行find`命令的目录运行。这里有两个例子:$pwd/home/shs$find。-namerunme-execdirpwd\;/home/shs/bin$找到.-namerunme-execdirls\;lsrmrunme到目前为止一切顺利。但请记住,-execdir也会在匹配文件的目录中执行命令。如果您运行下面的命令,并且该目录包含一个名为“ls”的文件,即使该文件没有执行权限,它也会运行该文件。使用-exec或-execdir类似于通过源运行命令。$找到。-namerunme-execdirls\;运行/home/shs/bin/ls文件$find.-namerunme-execdirrm{}\;这是一个冒名顶替的rm命令$ls-lbintotal12-r-x------1shsshs25Oct1318:12ls-rwxr-x---1shsshs36Oct1318:29rm-rw-rw-r--1shsshs28Oct1318:55runme$catbin/lsecho运行$0file$catbin/rmecho这是一个冒名顶替的rm命令-okdir选项也请求权限为了更加谨慎,请使用-okdir选项。与-ok一样,此选项将请求运行命令的权限。$找到。-namerunme-okdirrm{}\;?您还可以仔细指定要使用的命令的完整路径,以避免出现上述任何问题的虚假命令。$找到。-namerunme-execdir/bin/rm{}\;find命令除了默认的print之外还有很多选项,有些可以让你的文件搜索更精确,但谨慎一点总是好的。加入Facebook和LinkedIn上的NetworkWorld社区发表评论。