簡體   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