从 glob 表达式打开所有文件的函数/别名
Function / alias that opens all files from glob expression
我正在尝试编写一个终端函数/别名,它可以从我想要的任何 glob 表达式中打开所有文件(例如,具有相同扩展名的所有文件)。
我尝试同时使用 find -exec
和 find | 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
我正在尝试编写一个终端函数/别名,它可以从我想要的任何 glob 表达式中打开所有文件(例如,具有相同扩展名的所有文件)。
我尝试同时使用 find -exec
和 find | 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