我想通过bash代码管道文件名到eog。Bash:管道到eog
这是我的代码:ls | grep "sample" | head -1
其中sample是所需文件的名称。
我很难弄清楚如何将输出管道连接到eog。
我试着将上面代码的输出存储到一个变量,然后将该变量传递给eog失败。
有什么建议吗?
我想通过bash代码管道文件名到eog。Bash:管道到eog
这是我的代码:ls | grep "sample" | head -1
其中sample是所需文件的名称。
我很难弄清楚如何将输出管道连接到eog。
我试着将上面代码的输出存储到一个变量,然后将该变量传递给eog失败。
有什么建议吗?
eog(“侏儒的眼睛”)不会让你管道文件进入它。您必须提供文件名作为命令行参数。
如果只有一个匹配的文件名,你可以只需键入:
eog *sample*
但是,这将有一个显示在当前目录中名称包含单词sample
所有文件的效果。这不是我清楚你为什么会想到的第一个字母,例如文件,以显示一个,但你可以这样写:
eog $(ls *sample* | head -n1)
你可能更愿意找到一个更具体的模式,虽然。
谢谢。你的解决方案和@linuts的解决方案都可以工作。 – mundomug
可以说,比从ls
解析输出有时会出错(例如空格或换行符的文件名),所以你可以尝试下:
find . -iname '*sample*' -exec eog '{}' \; -quit
或限制到当前目录
find . -maxdepth 1 -iname '*sample*' -exec eog '{}' \; -quit
上面会找到任何文件包含什么“样本”(不区分大小写 - 使用-name
为区分大小写),并在其上运行eog
- 和第一赛后将退出,所以只能打开第一个文件。
什么是'eog'?一份文件?一个程序?为了我的钱,将代码编写为shell脚本并使其可执行;如果失败了,请将其作为功能。 –
只是为了澄清:你是否想用文件名作为参数调用eog,还是要将文件名写入eog的stdin?我不认为后者会完成任何事情。 – sepp2k
@JonathanLeffler:[Eye of GNOME](http://projects.gnome.org/eog/),一个图像查看器。 – hammar