Unix find -exec:为什么以下行为有所不同?

李丹

以下是预期的工作方式:

$ find . -name .git -exec dirname '{}' \;
./google/guava
./JetBrains/intellij-community
./zsh-users/zsh-syntax-highlighting

但是以下内容仅返回点:

$ find . -name .git -exec echo "$(dirname '{}')" \;
.
.
.

为什么会这样,如何$(dirname '{}')find -exec命令中使用

请注意,我询问的是UNIX find(特别是OS X和FreeBSD),而不是GNU。

开心果

行为差异的原因

您的外壳正在评估$(dirname)之前的查找,从而导致执行以下命令:

find . -name .git -exec echo . ;

其他方式

  • 当然,您可以在find内部使用shell扩展,方法是自己调用另一个shell(或者更好的方法是,使用需要的shell作为shebang调用脚本)。
    换一种说法:

    find . -name .git -exec sh -c 'dirname {}' \;
    
  • 不使用解决方案dirname(POSIX,速度更快,需要减少一个子流程):

    find . -name .git -exec sh -c 'path={}; echo "${path%/*}" ' \;
    
  • / u / tripleee的答案(支持他而不是我)与find优化结合在一起:

    find . -name .git -exec sh -c 'for f; do echo "${f%/*}"; done' _ {} \+
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Assembly和Activator对于CreateInstance的行为有所不同

来自分类Dev

为什么这些小型D程序的行为有所不同?

来自分类Dev

为什么/ bin / sh在Mac和Ubuntu上的行为有所不同

来自分类Dev

为什么此数组初始化的行为有所不同?

来自分类Dev

在通过PropertyDescriptorCollection进行迭代时,为什么var的行为有所不同?

来自分类Dev

Linux,Unix,Solaris中的线程工作方式是否有所不同

来自分类Dev

为什么嵌套类在Java和C#之间的行为有所不同?

来自分类Dev

为什么Chrome和Firefox的行为有所不同?

来自分类Dev

DbQuery在foreach循环中的行为有所不同。为什么?

来自分类Dev

为什么ContextMenuOpening的Source对于Canvas和UserControl的行为有所不同?

来自分类Dev

为什么reference_wrapper对于内置类型的行为有所不同?

来自分类Dev

为什么`-lt`对于字符和字符串的行为有所不同?

来自分类Dev

在这些示例中,为什么“ last”在Perl中的行为有所不同?

来自分类Dev

为什么单个元素哈希表在Powershell中的行为有所不同?

来自分类Dev

为什么通过Crontab启动的脚本的行为有所不同?

来自分类Dev

为什么numpy导入的行为有所不同?

来自分类Dev

为什么groupby操作的行为有所不同

来自分类Dev

为什么NumberFormatInfo在Azure环境中的行为有所不同?

来自分类Dev

什么是UNIX?什么是UNIX?

来自分类Dev

为什么以foreach调用时,ForEach-Object的行为会有所不同?

来自分类Dev

带有MS-DOS的Unix函数FIND

来自分类Dev

为什么这些小型D程序的行为有所不同?

来自分类Dev

为什么pidof和pgrep的行为有所不同?

来自分类Dev

为什么在此示例中,“ grep”的行为有所不同?

来自分类Dev

Linux,Unix,Solaris中的线程工作方式是否有所不同

来自分类Dev

C ++为什么在与find函数一起使用时,迭代器的行为有所不同?

来自分类Dev

wc在Unix和Linux上的行为有所不同

来自分类Dev

为什么hide()的行为有所不同?

来自分类Dev

为什么to_sym的行为有所不同?

Related 相关文章

  1. 1

    为什么Assembly和Activator对于CreateInstance的行为有所不同

  2. 2

    为什么这些小型D程序的行为有所不同?

  3. 3

    为什么/ bin / sh在Mac和Ubuntu上的行为有所不同

  4. 4

    为什么此数组初始化的行为有所不同?

  5. 5

    在通过PropertyDescriptorCollection进行迭代时,为什么var的行为有所不同?

  6. 6

    Linux,Unix,Solaris中的线程工作方式是否有所不同

  7. 7

    为什么嵌套类在Java和C#之间的行为有所不同?

  8. 8

    为什么Chrome和Firefox的行为有所不同?

  9. 9

    DbQuery在foreach循环中的行为有所不同。为什么?

  10. 10

    为什么ContextMenuOpening的Source对于Canvas和UserControl的行为有所不同?

  11. 11

    为什么reference_wrapper对于内置类型的行为有所不同?

  12. 12

    为什么`-lt`对于字符和字符串的行为有所不同?

  13. 13

    在这些示例中,为什么“ last”在Perl中的行为有所不同?

  14. 14

    为什么单个元素哈希表在Powershell中的行为有所不同?

  15. 15

    为什么通过Crontab启动的脚本的行为有所不同?

  16. 16

    为什么numpy导入的行为有所不同?

  17. 17

    为什么groupby操作的行为有所不同

  18. 18

    为什么NumberFormatInfo在Azure环境中的行为有所不同?

  19. 19

    什么是UNIX?什么是UNIX?

  20. 20

    为什么以foreach调用时,ForEach-Object的行为会有所不同?

  21. 21

    带有MS-DOS的Unix函数FIND

  22. 22

    为什么这些小型D程序的行为有所不同?

  23. 23

    为什么pidof和pgrep的行为有所不同?

  24. 24

    为什么在此示例中,“ grep”的行为有所不同?

  25. 25

    Linux,Unix,Solaris中的线程工作方式是否有所不同

  26. 26

    C ++为什么在与find函数一起使用时,迭代器的行为有所不同?

  27. 27

    wc在Unix和Linux上的行为有所不同

  28. 28

    为什么hide()的行为有所不同?

  29. 29

    为什么to_sym的行为有所不同?

热门标签

归档