从 glob 表达式打开所有文件的函数/别名

Function / alias that opens all files from glob expression

我正在尝试编写一个终端函数/别名,它可以从我想要的任何 glob 表达式中打开所有文件(例如,具有相同扩展名的所有文件)。

我尝试同时使用 find -execfind | xargs

这个有效:

$ find . -type f -name '*.eps' -exec gnome-open {} \;

此函数(源自 ~/.bashrc)仅打开一个文件:

openall () { find . -type f -name "" -exec gnome-open {} \; ; }

我还尝试了 xargs 路由(在终端中写入时有效):

$ find . -iname "*.eps" -print0 | xargs -0 gnome-open ;

同样只能打开一个文件,而其中一个有效:

$ find . -iname "*.eps" | xargs -n 1 gnome-open ;

该函数(同样源自 ~/.bashrc)不:

openall () { find . -iname '' | xargs -n 1 gnome-open ; }

因为它 returns:

Usage: gnome-open <url>

我想我在传递参数时做错了什么,但我不知道是什么。

您没有展示如何调用失败的函数。

openall () { find . -type f -name "" -exec gnome-open {} \; ; }

应该可以,但你需要引用参数:

openall "*.eps"

否则,shell 在 调用 openall 之前扩展模式 ,并且您的函数仅选择第一个扩展参数。

openall () { find . -iname '' | xargs -n 1 gnome-open ; }

这里你用的是单引号。这将忽略所有参数并仅查找文字名称为 </code>.</p> 的文件 <hr> <p>也许只提供后缀而不是模式更简单?这避免了引用:</p> <pre><code>openall () { find . -type f -name "*" -exec gnome-open {} \; ; }

注意 </code> 之前的 <code>*。像这样称呼它:

openall .eps