2016-04-20 100 views
1

我有以下文件夹结构:从多个文件夹中的文件复制到一个

>Folder1 
    >>date1 
    >>>Empty 
     1.jpg 
     2.jpg 
    >>>Occupied 
     x.jpg 
     y.jpg 
    >>date2 
    >>>Empty 
     1.jpg 
     2.jpg 
    >>>Occupied 
     x.jpg 
     y.jpg 

我需要的所有文件

  • 在空文件夹

    复制到其他单个文件夹

  • 已占用文件夹中的其他单个文件夹

我试过$ cp Folder1/**/Empty/*.jpg ~/destination_folder/但它给我错误:“参数列表太长”。我该怎么做呢?

+1

您将要将具有相同名称(例如1.jpg)的文件移动到同一文件夹。你想如何解决同名的冲突? – Victor

+0

实际上我只是查了一下,他们没有相同的名字,我只是把它作为一个例子。 – ddd

回答

0

您可以使用find

find Folder1 -wholename '*Empty*.jpg' -exec cp -v {} ~/destination_folder + 

+-exec选项年底将调用cp多次需要避免参数列表太长错误,但尽可能少。这意味着它将始终以最大数量的参数调用cp

如果您find应该不支持+语法,你仍然可以使用:

find Folder1 -wholename '*Empty*.jpg' -exec cp -v {} ~/destination_folder \; 

它将调用cp每个源文件一次。虽然这仍然有效,但需要更多时间。

+1

完美工作,谢谢! – ddd

相关问题