gpt4 book ai didi

bash - 查找命令末尾的 `\;` 和 `+` 有什么区别?

转载 作者:行者123 更新时间:2023-12-05 09:22:02 24 4
gpt4 key购买 nike

这些是用于将制表符转换为空格的 bash 命令。这是 link到原始的 stackoverflow 帖子。

这个在命令末尾使用\;

find /path/to/directory -type f -iname '*.js' -exec sed -ie 's|\t|    |g' '{}' \;

这个使用 + 而不是 \;

find /path/to/directory -type f -iname '*.js' -exec sed -ie 's|\t|    |g' '{}' '+'

两者到底有什么区别?

最佳答案

\;+ 与 bash 无关。它是 find 命令的参数,特别是 find-exec 选项。

find -exec 使用{} 将当前文件名传递给指定命令,使用\; 标记结束命令的参数。 \ 是必需的,因为 ; 本身 对 bash 是特殊的;通过键入 \;,您可以传递文字 ; 字符作为参数。 (您也可以键入 ';'";"。)

+ 符号(不需要 \ 因为 + 对 bash 来说不是特殊的)导致 find 调用以类似于 xargs 的方式使用多个参数而不是只有一个参数指定命令。

例如,假设当前目录包含 2 个名为 abcxyz 的文件。如果您键入:

find . -type f -exec echo {} \;

它调用 echo 命令两次,产生以下输出:

./abc
./xyz

如果您改为键入:

find . -type f -exec echo {} +

然后 find 只调用一次 echo,输出如下:

./xyz ./abc

有关更多信息,请键入 info findman find(如果您的系统上安装了文档),或者您可以在 http://www.gnu.org/software/findutils/manual/html_node/find_html/ 在线阅读手册

关于bash - 查找命令末尾的 `\;` 和 `+` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com