将多个文件夹中的文件复制为一个

时间:2016-04-20 21:56:07

标签: macos bash shell

我有以下文件夹结构:

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

我需要复制所有文件

    空文件夹中的
  • 到另一个单个文件夹

  • 在Occupied文件夹中的另一个文件夹

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

1 个答案:

答案 0 :(得分: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一次。虽然这仍然有效,但需要更多时间。