我正试着通过bash代码把文件名传给eog。
下面是我的代码:ls | grep "sample" | head -1,其中sample是所需文件的名称。
我想不出如何通过管道将输出传送到eog。
我曾尝试将上述代码的输出存储到一个变量中,然后将该变量传递给eog,但没有成功。
有什么建议吗?
发布于 2013-05-19 02:36:07
这就是你要找的吗?
ls | grep "sample" | head -1 | xargs eog发布于 2013-05-19 02:42:47
可以说,解析来自ls的输出有时会出错(例如,文件名中的空格或换行符),因此您可以尝试下一步:
find . -iname '*sample*' -exec eog '{}' \; -quit或限制到当前目录
find . -maxdepth 1 -iname '*sample*' -exec eog '{}' \; -quit上面的程序将找到任何包含"sample“的文件(不区分大小写-使用-name表示区分大小写),并将在其上运行eog -并将在第一次匹配后退出,因此将只打开第一个文件。
发布于 2013-05-19 02:38:45
eog (“gnome之眼”)不允许您通过管道将文件放入其中。您必须提供文件名作为命令行参数。
如果只有一个匹配的文件名,您只需键入:
eog *sample*但这样做的效果是显示当前目录中名称包含单词sample的所有文件。我不明白为什么您期望按字母顺序排列的第一个这样的文件是要显示的文件,但您可以这样做:
eog $(ls *sample* | head -n1)不过,您可能更喜欢找到更具体的模式。
https://stackoverflow.com/questions/16627628
复制相似问题