gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:54 24 4
gpt4 key购买 nike

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

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

这个有效:

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

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

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

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

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

这又一次只打开一个文件,而一个有效:

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

函数(同样,来源于 ~/.bashrc)不:

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

返回时:

Usage: gnome-open <url>

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

最佳答案

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

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

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

openall "*.eps"

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

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

这里你使用了单引号。这将忽略所有参数并仅查找文字名称为 $1 的文件。


也许只提供后缀而不是模式更简单?这避免了引用:

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

注意 $1 之前的 *。像这样调用它:

openall .eps

关于linux - 从 glob 表达式打开所有文件的函数/别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56724572/

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