-execdir 命令也是一个选择 另一个可以用来修改 find 命令行为,并可能使其更可控的选项是 -execdir 。-exec 会运行指定的任何命令,而 -execdir 则从文件所在的目录运行指定的命令,而不是在运行find` 命令的目录运行指定的命令。这是两个它的例子: $ pwd /home/shs $ find . -name runme -execdir pwd \; ...
[root@zorrozou-pc0 find]# find /etc/ -name 'passwd' -execdir echo {} \; ./passwd ./passwd ./passwd 一个命令打印出来的路径都是/etc/开头,另一个显示的都是当前目录下的某某文件。 execdir的方式要比exec安全一些,因为这种执行方式避免了在解析文件名时所产生的竞争条件。 出了上述两种比较典型的...
[root@GeekDevOps-find ~]# find / -name passwd -exec ls {} +;/etc/pam.d/passwd /etc/passwd /sys/fs/selinux/class/passwd/perms/passwd /usr/bin/passwd/sys/fs/selinux/class/passwd:index perms[root@GeekDevOps-find ~]# find / -name passwd -execdir ls {} +;index perms./passwd./p...
前一个命令打印出来的路径都是以/开头,后一个显示的都是当前目录下的某某文件。execdir的方式要比exec安全一些,因为这种执行方式避免了在解析文件名时所产生的竞争条件。 出了上述两种比较典型的执行命令的方法以外,find还对这两个参数提供了另一种形式的命令执行格式: -exec command {} + -execdir command {} ...
在程序退出之前,任何通过-exec ... +或-execdir ... +构建的命令行都会被调用。执行-quit后,命令行中指定的文件将不再被处理。例如,find /tmp/foo /tmp/bar -print -quit将仅打印 /tmp/foo。-quit的一个常见用途是在找到所需内容后停止搜索文件系统。
在程序退出之前,任何通过-exec ... +或-execdir ... +构建的命令行都会被调用。执行-quit后,命令行中指定的文件将不再被处理。例如,find /tmp/foo /tmp/bar -print -quit将仅打印 /tmp/foo。-quit的一个常见用途是在找到所需内容后停止搜索文件系统。
execdir和exec有一些差别,主要是在执行指定的命令时,那个相关命令是在那个工作目录下执行的差别。exec是在find所指定的起始目录,而execdir是文件所在目录。对比一下就明白了: [root@zorrozou-pc0 find]# find /etc/ -name 'passwd' -exec echo {} \; ...
–-execdir:与-exec类似,但是将匹配到的文件或目录移动到对应的父目录下再执行命令 –-ok:与-exec类似,但在执行命令之前需要用户确认 4. 示例: – 查找当前目录下所有的文件:find . – 查找当前目录及子目录下所有的文件:find . -type f – 查找所有以.txt结尾的文件:find . -name “*.txt” ...
find . -type f -name "*.c" -execdir make {} \; 这将在找到的所有 .c 文件所在的目录中执行 make 命令,并在遇到错误时停止执行。 总之,如果 find -exec 返回非零,则停止 make 的最佳方法是使用 find 命令的 -execdir 选项,而不是 -exec 选项。这将确保在遇到错误时,make 命令会停止执行。相关...
在程序退出之前,任何通过-exec ... +或-execdir ... +构建的命令行都会被调用。执行-quit后,命令行中指定的文件将不再被处理。例如,find /tmp/foo /tmp/bar -print -quit将仅打印 /tmp/foo。-quit的一个常见用途是在找到所需内容后停止搜索文件系统。