如何从“find”输出打开多个文件?

如何从“find”输出打开多个文件?

我知道我可以打开在目录中找到的多个文件,如下所示:

find -name *.foo -xargs <command> {} \;

这是可行的,但是当尝试同时在 gedit 中打开一堆文本文件时,它会连续打开它们(当一个文件关闭时,会打开下一个文件)。

我想同时打开所有这些文件。我怎样才能实现这个目标?

答案1

要使用 一次对多个文件执行操作find,请使用+而不是\;

find . -name '*.foo' -exec gedit {} +

使用 zsh 或 bash ≥4(如果您放入shopt -s globstar~/.bashrc,您可以使用**/递归到子目录:

gedit **/*.foo

zsh还有很多全局限定符它可以取代 的大部分用途find

答案2

在 Mac OS X bash 上,您可以运行如下命令:

for file in $(find . -name "*.py"); do open -a SublimeText $file; done. 

一个缺点是它在 Sublime 的新窗口中打开,而不是使用新选项卡。

答案3

我认为在这种情况下你可以使用

find ./ -name \*.foo | xargs gedit

相关内容