将文件复制到 bash 中包含相同目录结构的另一个目录
Copy files to another directory containing the same directory structure in bash
我的目录结构如下:
dir1
+-- _class1
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
+-- _class2
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
+-- _class3
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
+-- _...
每个 class 包含完全相同的目录,并且这些目录包含 png
个文件。
我想要做的是将内容从 dir1
复制到 dir2
,这样 dir2
具有以下格式:
dir2
+-- _i
|
+-- _ii
|
+-- _iii
|
+-- _...
例如:dir2/i/*.png
应包含 dir1/class1/i/*.png
、dir1/class2/i/*.png
、dir1/class3/i/*.png
等中的所有文件...
我已尝试执行以下操作:
for dir in dir1/*/; do
cp -r dir1 dir2;
done
但我得到的是以下结构:
dir2
+-- _i
|
+-- _ii
|
+-- _iii
|
+-- _...
|
+-- _class2
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
+-- _class3
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
+-- _...
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
它似乎只适用于第一个目录,然后继续创建其他目录,而不是将它们复制到已经存在的目录结构中。
在 bash 中执行此操作的最佳方法是什么?
通配符需要另一个级别来匹配 i
、ii
等目录。
for dir in dir1/*/*/; do
cp -R "$dir" dir2
done
只需使用:
cp -R dir1/*/*/ dir2/
我认为您不需要使用 shell 迭代模式。 cp
命令可以做到。
我的目录结构如下:
dir1
+-- _class1
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
+-- _class2
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
+-- _class3
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
+-- _...
每个 class 包含完全相同的目录,并且这些目录包含 png
个文件。
我想要做的是将内容从 dir1
复制到 dir2
,这样 dir2
具有以下格式:
dir2
+-- _i
|
+-- _ii
|
+-- _iii
|
+-- _...
例如:dir2/i/*.png
应包含 dir1/class1/i/*.png
、dir1/class2/i/*.png
、dir1/class3/i/*.png
等中的所有文件...
我已尝试执行以下操作:
for dir in dir1/*/; do
cp -r dir1 dir2;
done
但我得到的是以下结构:
dir2
+-- _i
|
+-- _ii
|
+-- _iii
|
+-- _...
|
+-- _class2
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
+-- _class3
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
+-- _...
| +-- _i
| +-- _ii
| +-- _iii
| +-- _...
它似乎只适用于第一个目录,然后继续创建其他目录,而不是将它们复制到已经存在的目录结构中。
在 bash 中执行此操作的最佳方法是什么?
通配符需要另一个级别来匹配 i
、ii
等目录。
for dir in dir1/*/*/; do
cp -R "$dir" dir2
done
只需使用:
cp -R dir1/*/*/ dir2/
我认为您不需要使用 shell 迭代模式。 cp
命令可以做到。