首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash :通过管道连接到eog

Bash :通过管道连接到eog
EN

Stack Overflow用户
提问于 2013-05-19 02:33:17
回答 3查看 1.9K关注 0票数 2

我正试着通过bash代码把文件名传给eog。

下面是我的代码:ls | grep "sample" | head -1,其中sample是所需文件的名称。

我想不出如何通过管道将输出传送到eog。

我曾尝试将上述代码的输出存储到一个变量中,然后将该变量传递给eog,但没有成功。

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-19 02:36:07

这就是你要找的吗?

代码语言:javascript
复制
ls | grep "sample" | head -1 | xargs eog
票数 3
EN

Stack Overflow用户

发布于 2013-05-19 02:42:47

可以说,解析来自ls的输出有时会出错(例如,文件名中的空格或换行符),因此您可以尝试下一步:

代码语言:javascript
复制
 find . -iname '*sample*' -exec eog '{}' \; -quit

或限制到当前目录

代码语言:javascript
复制
 find . -maxdepth 1 -iname '*sample*' -exec eog '{}' \; -quit

上面的程序将找到任何包含"sample“的文件(不区分大小写-使用-name表示区分大小写),并将在其上运行eog -并将在第一次匹配后退出,因此将只打开第一个文件。

票数 3
EN

Stack Overflow用户

发布于 2013-05-19 02:38:45

eog (“gnome之眼”)不允许您通过管道将文件放入其中。您必须提供文件名作为命令行参数。

如果只有一个匹配的文件名,您只需键入:

代码语言:javascript
复制
eog *sample*

但这样做的效果是显示当前目录中名称包含单词sample的所有文件。我不明白为什么您期望按字母顺序排列的第一个这样的文件是要显示的文件,但您可以这样做:

代码语言:javascript
复制
eog $(ls *sample* | head -n1)

不过,您可能更喜欢找到更具体的模式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16627628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档