我有一个包含许多类似子目录的目录,每个子目录都有一些我感兴趣的文件和一些我不感兴趣的文件。
我想要复制:
来自:两个特定文件:每个子目录中的 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/
我希望这能有所帮助。