假设目录中有不同的文件: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
到文件管理器中