获取这几天看的pdf文件
获取这几天看的pdf文件
起因
由于pdf阅读器有时候会crash,有时候也是自己会不小心关掉,或者系统升级的什么原因,总之是会退出。但是退出后,不是将我以前看的文档都打开,而是打开几个最近看的文档。而且个数很少,好像只有4个还是几个。应该是应用程序的设定的问题。
导致我经常要找以前打开的文档,要找很久,有时候一篇pdf文档不是一直在看的。加上pdf比较多,就有点乱了。
所以需要按天整理下当天打开的pdf文件,弄个列表出来。
解决方法
- 获取我打开pdf文件的应用的pid
ps aux | grep 'PDF' |awk '{print $2}' | head -1
ps aux | grep 'Skim' |awk '{print $2}' |head -1
- 利用pid获取打开的文件信息
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服务器的邮件,虽然大部分会放在垃圾箱,但是还是可以收到的。
至此,问题算是有个解决了。