Hello Bash Superheros,
我正在尝试创建一个简单的bash函数,将 find 的输出传递给pdf查看器,类似但仅限于 evince 。
function findpapers {
find ~/papers/ -name *$1* | evince
}
上述功能可打开查看器,但不显示任何所需的文件/路径。最后,我想显示从查找输出的所有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。谢谢你提前!
答案 0 :(得分:4)
你想在evince的命令行上找到文件名列表,而不是标准输入。
使用
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
答案 1 :(得分:1)
你也应该可以使用
find /home/alex/papers/ -iname '*erebus*' -exec evince '{}' +
答案 2 :(得分:0)
如果您使用bash
4或更高版本,则不需要find
:
shopt -s globstar
evince /home/alex/papers/**/*erebus*