如何从命令行将多个文件复制到剪贴板?

如何从命令行将多个文件复制到剪贴板?

假设目录中有不同的文件:one.txt、two.jpg、three.pdf、four.jpg 等。您想从命令行将它们全部复制到剪贴板。类似copyclipboard *。您该怎么做?

基于这个答案,它解决了特定情况,但文件类型已在脚本中硬编码。我想知道是否有更通用的解决方案。

答案1

事实上,我在原始问题中发布的命令适用于多种情况:

find ${PWD} -name "*.pdf"| xclip -i -selection clipboard -t text/uri-list

唯一的要求是第一个命令(find在本例中)生成需要复制的文件的绝对文件名列表。如果您检查man find,您会发现您可以修改命令以查找创建时间晚于特定日期、大于特定大小、具有特定权限、匹配特定正则表达式等的文件。

如果您想要一个针对特定用例的快捷命令 - eq 从当前目录复制文件并匹配特定的掩码,您可以编写一个简短的脚本:

#!/bin/sh
find "$PWD" -name "$1" | xclip -i -selection clipboard -t text/uri-list

并使用

cb "*.txt"

cb脚本的名称在哪里)

答案2

这是为了加快您的某些工作流程还是为了某些脚本?

我通常的做法是,当我进入包含要复制文件的文件夹时,我会运行 nautilus .文件浏览器。我发现直接从终端复制的工作流程问题是,您仍然需要稍后浏览到要粘贴文件的文件夹。

如果我遗漏了什么,请发表评论。

答案3

将其保存为脚本cpfiles

#!/bin/bash
{
    for i in "$@"; do
        echo -en "file://$(realpath ${i})\n"
    done
} | xclip -i -selection clipboard -rmlastnl -t text/uri-list

用它

cpfiles '/path/to/file1/' 'path/to/file2'

然后粘贴Ctrl+v到文件管理器中

相关内容