根据多个目录的扩展名复制重叠文件

时间:2017-09-15 04:35:45

标签: bash scripting find cp

我有多个目录中的文件,我只想复制那些在所有目录中找到扩展名的目录。这是一个例子:

dir1
    file1.txt  
    file2.bcd
    file3.aa

dir2
    file4.ogg
    file5.txt
    file6.bcd

dir3 
    file7.pgp
    file8.bcd
    file9.aa

复制命令或脚本只能将file2.bcdfile6.bcd以及file8.bcd复制到输出目录,因为它们曾经是所有人共有的目录。这只是一个示例,目录中的文件扩展名与文件类型无关,我想将这些扩展名复制到所有目录中。

Output
   file2.bcd
   file6.bcd 
   file8.bcd  

如果我事先知道重叠的文件扩展名,我可以使用findcpmv来讨论here

感谢您的帮助,

编辑: 如果有人需要,我已解决了以下问题。

1. Find and print only file extensions. 
2. Sort and count the extensions. 
3. If count equals folders searched, then copy file to output directory. 

当然,这种方法假定每个文件扩展名只能在每个文件夹中找到一次,而且恰好是我的文件。

1 个答案:

答案 0 :(得分:0)

您可以使用find命令将文件复制到输出目录 find ./ -type f -name '*.<file_ext>' -exec cp -r {} /output/ \;

file_ext 替换为文件扩展名。