Unix命令将唯一文件从一个目录复制到另一个目录

时间:2015-10-21 13:44:48

标签: unix

我在输入目录中有一组文件,我只需要将唯一的jar文件复制到另一个目录 示例:目录中包含文件(x.txt,y.txt,z.txt,a.jar,b.jar,c.jar,d.jar,e.jar,f.jar)。

a.jar和b.jar具有相同的数据,d.jar,e.jar和f.jar具有相同的数据。

我想只将a.jar,c.jar和d.jar文件复制到输出目录中 请建议我解决方案

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

shasum -a 256 input_dir/*.jar | sort | awk '{if($1!=p)print $2;p=$1}' |
xargs -I{} cp -vp {} output_dir/

input_dir/d.jar -> output_dir/d.jar
input_dir/c.jar -> output_dir/c.jar
input_dir/a.jar -> output_dir/a.jar

我们的想法是计算所有可能输入文件的哈希值,然后使用sortawk来获取具有相同哈希值的第一个文件。

sort以一种连续列出具有相同散列的文件的方式排列列表,awk命令删除散列与前一行中的散列匹配的行,因此仅保留每个给定哈希的第一个文件。

请注意,如果您有许多文件或文件很大,这可能会非常耗时。

编辑:仅匹配* .jar文件的模式