Bash:管道到eog

时间:2013-05-18 18:33:17

标签: bash

我正在尝试通过bash代码将文件名传递给eog。

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

我无法弄清楚如何将输出传输到eog。

我已经尝试将上面代码的输出存储到变量中,然后将该变量传递给eog失败。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

这是你要找的吗?

ls | grep "sample" | head -1 | xargs eog

答案 1 :(得分:3)

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

 find . -iname '*sample*' -exec eog '{}' \; -quit

或限制当前目录

 find . -maxdepth 1 -iname '*sample*' -exec eog '{}' \; -quit

上面会找到包含“sample”的任何文件(不区分大小写 - 对于区分大小写使用-name并且会在其上运行eog - 并且会在第1次匹配后退出,因此将打开仅限第一个文件。

答案 2 :(得分:1)

eog(“gnome之眼”)不允许您将文件传输到其中。您必须提供文件名作为命令行参数。

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

即可
eog *sample*

但这会产生显示当前目录中名称包含单词sample的所有文件的效果。我不清楚为什么你会期望按字母顺序排列第一个这样的文件才能显示,但你可以这样做:

eog $(ls *sample* | head -n1)

但您可能更愿意找到更具体的模式。