繁体   English   中英

如何将输出从查找到pdf查看器

[英]how to pipe output from find to pdf viewer

你好Bash超级英雄,

我正在尝试创建一个简单的bash函数,该函数将从find到pdf查看器的输出通过管道传输,类似但仅限于evince

function findpapers {
    find ~/papers/ -name *$1* | evince 
}

上面的功能打开查看器,但不显示任何所需的文件/路径。 最终,我想显示find所输出的所有pdf文件。 一个简单的查找命令,例如:

$ find /home/alex/papers/ -name *erebus*

创建如下输出:

/home/alex/papers/2000/rowe/seismic_and_acoustic_observations_at_mount_erebus_volcano_ross_island_antarctica.pdf

/home/alex/papers/2008/Jones/infrasonic_tracking_of_large_bubble_bursts_and_ash_venting_at_erebus_volcano_antarctica.pdf

然后的想法是在查看器中显示这两个pdf文件。

有什么想法或建议吗? 如果有帮助,我正在使用Linux Mint。 预先感谢堆积!

您需要在命令行的文件名列表中,而不是在其标准输入中。

采用

evince $(find /home/alex/papers/ -name *erebus*)

要么

find /home/alex/papers/ -name *erebus* | xargs evince

在linux上(或使用gnu版本的find和xargs的任何操作系统)上,如果文件名可能包含空格,则最好使用

find /home/alex/papers/ -name *erebus* -print0 | xargs -0 evince

您还应该能够使用

find /home/alex/papers/ -iname '*erebus*' -exec evince '{}' +
  • iname告诉我们发现给定的搜索模式不区分大小写。
  • -exec用找到的为{}插入的文件名执行给定命令evince。 加号指示find将所有找到的文件名附加到单个evince命令,而不是为每个找到的文件启动新的evince。 如果用转义的分号(\\;)替换+,则会得到后者的行为。

如果您使用的是bash 4或更高版本,则不需要find

shopt -s globstar
evince /home/alex/papers/**/*erebus*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM