Process

檢索所有打開的 pdf 文件的名稱(以 evince 或其他方式)

  • June 29, 2020

我經常打開許多 PDF 文件。這些通常使用 chrome 下載並立即使用 evince 打開。

有時我想保留所有打開的 PDF 文件的狀態,以便稍後重新打開同一組文件。

這主要發生在我需要重新啟動以及重新打開同一組文件時,但有時我只想保留打開的文件列表以供以後使用。

有沒有辦法從 evince 或任何其他程序獲取所有打開的 pdf 文件的名稱?或者至少,有沒有辦法讓 evince 在重新啟動後重新打開同一組文件?

假設您正在查看的 PDF 具有副檔名 .pdf,以下可能會為您提供打開的 PDF 列表:

$ lsof | grep ".pdf$"

如果您只使用過 Evince,請參閱 Gilles 的類似答案。在我的機器上(打開了幾個 pdf)顯示輸出如下

evince    6267     myuser   14u      REG    252,0   363755    7077955 /tmp/SM.pdf

要獲取文件名,我們可以使用awk

$ lsof | grep ".pdf$" | awk '{print $9}'

甚至更好,

$ lsof | awk '/.pdf$/ {print $9}'

我們可以將這些結果保存在一個文件中:

$ lsof | awk '/.pdf$/ {print $9}' > openpdfs

後來,要恢復它們:

$ xargs -a openpdfs evince

為了自動實現這一點,您可以使用桌面環境提供的任何機制在退出時執行“保存”命令,在登錄時執行“打開”命令。通過確保lsof您的使用者正在打開返回的 pdf,可以增加一點穩健性。這種方法的一個優點是它應該適用於任何採用命令行參數的 pdf 查看器。一個缺點是它依賴於文件名。但是,稍微戳一下,知道文件副檔名的要求也可能被刪除。

引用自:https://unix.stackexchange.com/questions/5601