如何将剪贴板的整个历史记录复制到文本文件?


10

我想粘贴整个剪贴板历史记录,其中包括在阅读过程中复制的单词(Ctrl + C /通过选择)。我安装了Glippy和ClipIt之类的程序,但我不知道如何粘贴所有单词,如果这些程序中存在这样的选项,我会一次复制到一个简单的文本文件中,而不是一次复制一个单词。有人可以帮我吗?

谢谢!


clipit将其历史记录存储在〜/ .local / share / clipit / history中,该格式包含一些控制字符,您可以使用来解析它们sed,但这有点复杂
bartekbrak 2012年

Answers:


5

您可以使用以下命令在clipit历史记录文件中看到一些字符串:

strings ~/.local/share/clipit/history

但这不是最好的方法。输出可能出现乱码。


3

ClipIt有python脚本像这样运行 python cliphist.py > clipit.history.txt

#!/usr/bin/env python
"""cliphist.py: utility to print clipit history file.
If an argument is passed on the command line, it will
be used as a separator, otherwise history items are
separated by a blank line. """

import struct, os, sys

homedir  = os.environ['HOME']
histfile = homedir + '/.local/share/clipit/history'
if len(sys.argv) > 1:
    sep = sys.argv[1]
else:
    sep = '---------------------------------------------------------------------'


with open(histfile,'rb') as f:
    f.read(68)
    size,_ = struct.unpack('2i',f.read(8))
    while (size > 0):
        item = f.read(size)
        print item
        _,_,_,size,_ = struct.unpack('5i',f.read(20))
        if size > 0: 
            print sep

尚未尝试过,但看起来正确并回答了问题(关于Clipit)
user7610 2014年

2

单击图标时,最新版本的Parcellite具有“另存为”菜单项。这会将所有历史记录条目保存到文件中。右键单击历史记录列表时,还会粘贴所有内容,这会将整个历史记录列表放置在剪贴板上。首选项有一个“全部粘贴”定界符,它将放置在每个条目的末尾。

https://sourceforge.net/projects/parcellite/files/parcellite/parcellite-1.1.1/ppa 此处:https //launchpad.net/~rickyrockrat/+archive/ppa


1

安装KDE的Klipper Clipboard Manager 安装Klipper并使用以下简单脚本:

text="nothing yet"
cnt=0
while [ "$text" != "" ]; do
  text=`qdbus org.kde.klipper /klipper getClipboardHistoryItem $cnt`
  echo "==== Clipboard content line $cnt:"
  echo "$text"                      # to terminal output
  echo "$text" > /path/to/file      # to file (EDIT this)
  cnt=$((cnt + 1))
done

注意:看起来它在Unity中表现不佳。因此,在KDE以外的其他桌面环境中,您的工作量可能会有所不同


FWIW,有人对Klipper和Unity有问题:askubuntu.com/questions/439303/…–
Sparhawk

0

用户Parcellite,在其图标“清除”上单击鼠标左键,选择所需的次数,然后单击“编辑剪贴板”并全部复制!请记住,请如此设置首选项:使用主要选择,以便于复制文本!


嗨,水瓶座!非常感谢你的回复。但是,当我单击编辑剪贴板时,我只会看到我复制的最后一个单词,而不是整个列表。也许与您合作有另一种方式?也许我必须在首选项中配置一些内容。
pandisvezia 2012年

那里有这个文件〜/ .local / share / parcellite / history,问题是它在换行符上有不可打印的字符,例如..您可以尝试自动替换/删除它们,但现在这开始变得混乱了……
Aquarius Power

0

来自 @ stepan-shamaiev的修改后的代码用于Python 3是否设置分隔符:

#!/usr/bin/env python3
"""cliphist.py: utility to print clipit history file."""

import struct, os

homedir  = os.environ['HOME']
histfile = homedir + '/.local/share/clipit/history'

with open(histfile,'rb') as f:
  f.read(68)
  size, _ = struct.unpack('2i', f.read(8))
  while size > 0:
    item = f.read(size)
    print(item.decode())
    _,_,_,size,_ = struct.unpack('5i',f.read(20))
    if size > 0: 
      print('------------------')
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.