430 字
2 分钟
获取这几天看的pdf文件
2021-09-15

获取这几天看的pdf文件#

起因#

由于pdf阅读器有时候会crash,有时候也是自己会不小心关掉,或者系统升级的什么原因,总之是会退出。但是退出后,不是将我以前看的文档都打开,而是打开几个最近看的文档。而且个数很少,好像只有4个还是几个。应该是应用程序的设定的问题。

导致我经常要找以前打开的文档,要找很久,有时候一篇pdf文档不是一直在看的。加上pdf比较多,就有点乱了。

所以需要按天整理下当天打开的pdf文件,弄个列表出来。

解决方法#

  • 获取我打开pdf文件的应用的pid
Terminal window
ps aux | grep 'PDF' |awk '{print $2}' | head -1
ps aux | grep 'Skim' |awk '{print $2}' |head -1
  • 利用pid获取打开的文件信息
Terminal window
lsof -p 1224 |grep .pdf|awk '{print substr($0,index($0,$9))}' >2021-09-15-reading-pdf.txt
  • 合起来写成script
#!/bin/bash
today=`date +%Y-%m-%d`
printf "PDF Experf opened files below:\n "
ppid=($(ps aux | grep 'PDF' |awk '{print $2}' | head -1))
lsof -p $ppid |grep .pdf |awk '{print substr($0,index($0,$9))}'
lsof -p $ppid |grep .pdf |awk '{print substr($0,index($0,$9))}' >$today-pdf-openfiles.txt
while ((i<100));do
printf "-"
((i=i+1))
done
printf "\n"
printf "Skim opened pdf files below:\n"
ppid_skim=($(ps aux | grep 'Skim' |awk '{print $2}' | head -1))
lsof -p $ppid_skim | grep .pdf |awk '{print substr($0,index($0,$9))}'
lsof -p $ppid_skim | grep .pdf |awk '{print substr($0,index($0,$10))}'>>$today-pdf-openfiles.txt
cat $today-pdf-openfiles.txt|xargs echo | mail -v -s pdf-books-reading miaomiaomi@outlook.com

结果#

就是将pdf阅读器目前打开的文件列出来,然后最后用mail发送邮件给我。

这个mail要在~/.mailrc里面做个配置。outlook有个好处就是接受来自非internet注册的smtp服务器的邮件,虽然大部分会放在垃圾箱,但是还是可以收到的。

至此,问题算是有个解决了。

获取这几天看的pdf文件
https://dididudu998.github.io/posts/获取这几天看的pdf文档/
作者
滴滴嘟嘟
发布于
2021-09-15
许可协议
CC BY-NC-SA 4.0