如何在保留目录结构的同时将文件从多个子目录复制到另一个目录?

如何在保留目录结构的同时将文件从多个子目录复制到另一个目录?

我有一个包含许多类似子目录的目录,每个子目录都有一些我感兴趣的文件和一些我不感兴趣的文件。

我想要复制:

来自:两个特定文件:每个子目录中的 file1.txt file2.json

至:其他地点

但在该位置创建子目录

例如如果我有

base
|_folder_00000001
|         |_-file1.txt
|         |_ file2.json
|         |_some_other_things_I_dont_need
|         |_some_other_folder_I_dont_need
|
|_folder_00000002
|         |_-file1.txt
|         |_ file2.json
|         |_some_other_things_I_dont_need
|         |_some_other_folder_I_dont_need
|
|_folder_00000003
|         |_-file1.txt
|         |_ file2.json
|         |_some_other_things_I_dont_need
|         |_some_other_folder_I_dont_need
|
|_folder_00000004
|         |_-file1.txt
|         |_ file2.json
|         |_some_other_things_I_dont_need
|         |_some_other_folder_I_dont_need
|

我想将其复制到另一个位置,但不包括“我不需要的一些其他东西和文件夹”

target
|_folder_00000001
|         |_-file1.txt
|         |_ file2.json
|         
|
|_folder_00000002
|         |_-file1.txt
|         |_ file2.json
|             |
|_folder_00000003
|         |_-file1.txt
|         |_ file2.json
|             |
|_folder_00000004
|         |_-file1.txt
|         |_ file2.json
|         

我如何从 bash 终端执行此操作?

答案1

您可以cp使用--parents

cd base
cp -v --parents */file1.txt */file2.json ../target/

答案2

您要复制的文件是否有某种模式?

从示例中,如果我们将“-file1.txt”和“file2.json”作为要复制到新目录结构的文件,则可以这样做,我认为:

rsync -av --include="*/" --include="*-file1.txt" --include="*file2.json" --exclude="*" /src/dir/  /dest/dir/

我希望这能有所帮助。

相关内容