gpt4 book ai didi

bash - unix:循环查找命令的结果

转载 作者:行者123 更新时间:2023-12-03 02:54:59 26 4
gpt4 key购买 nike

我有一个 find 命令,可以按照我的意愿输出(它查找名称中包含 strelka 并以 .vcf 结尾的文件):

find . -name *strelka* | grep '.vcf$'

但我想迭代每个并执行其他操作。

为了简单地进行实验,我只是让它对每个文件进行行计数(但最终我想做更多,这只是我在玩),但它似乎已经不起作用.

我有:

for i in find . -name \*strelka\* | grep '.vcf$'; do wc -l $i; done

有人知道这是怎么回事吗?

最佳答案

  1. 使用查找。 -name '*strelka*.vcf',从而避免 grep 并让您使用 find ... -exec

  2. 通过管道输入 xargs,或使用 -exec:

    find . -name '*strelka*.vcf' | xargs wc -l  

    find . -name '*strelka*.vcf' -exec wc -l '{}' \;

出于各种原因,更喜欢后者。

你的方法(在你的发现周围有一个 $(...) )是可以的,除了:

  • 如果文件名中有空格,您会感到悲伤。 (你也会对 xargs 感到悲伤 - 有一种涉及\0 的方法,但它有点神秘。)
  • 如果匹配文件太多,您将超出命令行长度限制。

关于bash - unix:循环查找命令的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22363983/

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