当前位置: 首页 > 面试题库 >

找到-exec cmd {} + vs | xargs

许俊晤
2023-03-14
问题内容

在大量文件中,哪一个效率更高,应该使用?

find . -exec cmd {} +

要么

find . | xargs cmd

(假设文件名中没有有趣的字符)


问题答案:

速度差异不明显。

但是您必须确保:

  1. 您的脚本不会假定文件名中没有文件空间,制表符等。第一个版本是安全的,第二个则不是。

  2. 您的脚本不会将以“ -” 开头的文件作为选项。

因此,您的代码应如下所示:

find . -exec cmd -option1 -option2 -- {} +

要么

find . -print0 | xargs -0 cmd -option1 -option2 --

第一个版本更短并且更容易编写,因为您可以忽略1,但是第二个版本更可移植且更安全,因为“ -exec cmd {} +”是GNU
findutils中的一个相对较新的选项(自2005年以来,许多运行中的系统都没有它)最近是越野车。-exec cmd {} +您还可以从其他答案中看到很多人也不知道这个“ ”。



 类似资料:
  • 我花了半天时间试图为此找到一个可行的解决方案,但要么我做错了一切,要么什么都不适合我。我是Java和JavaFX的新手。 我在Windows上使用VSCode,并且安装了“Extension Pack for Java”和“Maven for Java”扩展,我使用JAVAFX原型作为构建方法创建了一个项目。 生成了一个示例项目,我运行它没有问题,甚至没有添加带有“VMargs”等的“launch

  • 我刚刚安装了Windows 10创作者更新(版本10.0.15063)。 我安装了多个版本的Visual Studio(2012, 2013, 2015和2017)。我几周前才安装了VS 2017。 CMake(版本3.8.1)在“VS2015 x64本机命令提示符”中运行时不再找到C/C编译器(在VS 2017命令提示符中运行时它确实正常工作)。 的内容: (的内容无关紧要。) CMake调用,

  • 我在Windows 10上使用Visual Studio 2013,今天遇到错误“未找到与约束匹配的导出:” 我做了以下操作,但仍然存在相同的问题: 链接中给出的解决方案错误消息“未找到与约束合约名称匹配的导出” 通过删除/重命名“ComponentModelCache”文件夹,但仍然存在问题。 运行VS修复,但仍然有相同的问题。 最后,我卸载了Visual Studio 2013并重新安装,但仍

  • 我目前正在Visual Studio中使用微软的Azure函数开发一个函数应用程序。我能够在azure上部署和发布功能,它似乎可以运行,但每当我试图在本地运行功能时,托管环境都无法找到任何“作业”。我在下面附上了一张图片。 必须指出的是,我在某个时候能够在本地部署,但我相信在一些更新之后,我无法运行我的功能 Azure函数和Web作业工具的当前版本:15.0.40424.0 当我创建新项目时,我尝

  • 我正在使用无服务器框架(https://serverless.com/framework/docs/providers/azure/guide/quick-start/) 以创建节点。js基于azure函数。我遵循了《快速入门指南》中所述的程序,但在使用npm start在本地运行时遇到以下问题: 未找到作业函数。请尝试将作业类和方法公开。如果使用的是绑定扩展(例如Azure存储、ServiceB

  • 我正在尝试让MS Bot builder示例在mac上运行,使用VS Preview。每次尝试运行应用程序时,我都会得到一个错误500,并且: