如何将Git Bash中find命令作为流处理,实时执行for循环?
解决方案
你原来用for x in $(find ...)的写法,会先让find跑完所有搜索、输出全部结果后,才开始循环处理,这就是为什么要等find执行完才一次性打开文件夹。要实现找到一个就立刻打开一个的效果,换成下面两种写法都可以:
写法一:用管道+while逐行处理
find . -name '*foo*' -type d 2> /dev/null | while read -r x; do start "$x" done
- 管道
|会把find的输出实时逐行传给while循环,每找到一个目录就立刻执行start打开它,不用等整个搜索结束。 -r参数是为了避免read解析路径里的反斜杠等特殊字符,保证路径读取准确。
写法二:用find自带的-exec参数
find . -name '*foo*' -type d 2> /dev/null -exec start {} \;
{}代表find找到的当前文件夹路径,\;是-exec的结束标记,find每匹配到一个目录就会立刻调用start命令打开它,同样能达到即时处理的效果。
内容的提问来源于stack exchange,提问作者dx_over_dt
相关产品推荐
相关产品推荐

