如何输入剪贴板来查找命令?

时间:2014-10-20 02:54:39

标签: bash find clipboard

我需要做的是传递一个文件名列表来查找并找到打印这些带有xargs路径的文件(find的-exec也可以),以便对它们执行命令。

我很清楚find可以读取文件名文件,读取行:

while read line; do find . -name "$line" -exec command '{}' \; ;done <file

但在我的情况下,从剪贴板中找到读取会更方便。

在剪贴板上,文件名是新行分隔的,因此当剪贴板打印出来时,它看起来就像提到的文件的文件内容。

我使用xsel来处理剪贴板(在Debian Linux中)。要对当前目录中的剪贴板上列出的所有文件执行命令,可以使用以下命令:

 xsel -b -o | xargs command

但是使用find的想法当然是能够递归地在列表中搜索这些文件中的任何一个。

如果以下方法有效会很好,但是这个查找只会读取列表中的第一个文件:

 xsel -b -o | while read line; do find . -name "$line" -print0 | xargs -0 command ;done

如果这是可以纠正的,那么这将解决问题。

重定向剪贴板(使用&lt;)来查找并不完全有效,因为bash说没有这样的文件 - 因为find需要一个文件。

如果find可以接收多个名称而不需要标记每个模式(即-name dsc456.jpg -name dsc457.jpg),或者可以将多个名称括在一个-name模式中,但是来自{{1}无论如何,这可能很难。

这就是我到达的地方,我想知道是否有人对此有任何想法!我可能必须编写一个脚本,将剪贴板写入文件并从那里开始。

1 个答案:

答案 0 :(得分:0)

你可以管道xargs代替find

$ xsel -b -o | xargs -I X -r -n 1 find . -name X -exec command '{}' \;