我在输入目录中有一组文件,我只需要将唯一的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文件复制到输出目录中 请建议我解决方案
答案 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
我们的想法是计算所有可能输入文件的哈希值,然后使用sort
和awk
来获取具有相同哈希值的第一个文件。
sort
以一种连续列出具有相同散列的文件的方式排列列表,awk
命令删除散列与前一行中的散列匹配的行,因此仅保留每个给定哈希的第一个文件。
请注意,如果您有许多文件或文件很大,这可能会非常耗时。
编辑:仅匹配* .jar文件的模式