将文件从多个目录复制到另一个多目录

让我们假设,我有两个文件夹; folder_1和folder_2。 每个文件夹中还有另外24个文件夹(folder_1和folder_2)。 folder_1的每个子文件夹包含1个文本文件,其名称为geomagnetic_script_xxxx。 xxxx是可变数字,“geomagnetic_script”对于所有文件夹都是常量。 folder_2的子文件夹为空。 我需要将每个文本文件(geomagnetic_script_xxxx)复制到folder_2的子文件夹中。 这样,folder_2的每个子文件夹都包含1个文本文件,该文件与folder_1的子文件夹相同。

哪个脚本允许我这样做?

在包含folder_1folder2的文件夹中运行此命令:

 find folder_1 -name 'geomagnetic_script_????' -type f -print0 | while read -d '' -r file; do echo cp "$file" folder_2/"${file#*/}"; done 

为了安全起见,我通过在它之前加上echo来禁止实际的cp命令。 看看它是否正在执行您想要的操作,然后删除echo并再次运行它。

我的机器上的示例输出:

 $ tree . ├── folder_1 │  ├── subfolder_1 │  │  └── file_25406 │  ├── subfolder_10 │  │  └── file_1439 │  ├── subfolder_11 │  │  └── file_21028 │  ├── subfolder_12 │  │  └── file_13026 │  ├── subfolder_13 │  │  └── file_3717 │  ├── subfolder_14 │  │  └── file_9825 │  ├── subfolder_15 │  │  └── file_14953 │  ├── subfolder_16 │  │  └── file_12760 │  ├── subfolder_17 │  │  └── file_8490 │  ├── subfolder_18 │  │  └── file_14577 │  ├── subfolder_19 │  │  └── file_11999 │  ├── subfolder_2 │  │  └── file_24557 │  ├── subfolder_20 │  │  └── file_27957 │  ├── subfolder_21 │  │  └── file_158 │  ├── subfolder_22 │  │  └── file_1361 │  ├── subfolder_23 │  │  └── file_27370 │  ├── subfolder_24 │  │  └── file_4919 │  ├── subfolder_3 │  │  └── file_30149 │  ├── subfolder_4 │  │  └── file_5352 │  ├── subfolder_5 │  │  └── file_27907 │  ├── subfolder_6 │  │  └── file_14716 │  ├── subfolder_7 │  │  └── file_1989 │  ├── subfolder_8 │  │  └── file_7850 │  └── subfolder_9 │  └── file_31831 ├── folder_2 │  ├── subfolder_1 │  ├── subfolder_10 │  ├── subfolder_11 │  ├── subfolder_12 │  ├── subfolder_13 │  ├── subfolder_14 │  ├── subfolder_15 │  ├── subfolder_16 │  ├── subfolder_17 │  ├── subfolder_18 │  ├── subfolder_19 │  ├── subfolder_2 │  ├── subfolder_20 │  ├── subfolder_21 │  ├── subfolder_22 │  ├── subfolder_23 │  ├── subfolder_24 │  ├── subfolder_3 │  ├── subfolder_4 │  ├── subfolder_5 │  ├── subfolder_6 │  ├── subfolder_7 │  ├── subfolder_8 │  └── subfolder_9 └── script.sh 50 directories, 25 files $ find folder_1 -type f -name 'file_*' -print0 | while read -d '' -r file; do cp "$file" folder_2/"${file#*/}"; done $ tree . ├── folder_1 │  ├── subfolder_1 │  │  └── file_25406 │  ├── subfolder_10 │  │  └── file_1439 │  ├── subfolder_11 │  │  └── file_21028 │  ├── subfolder_12 │  │  └── file_13026 │  ├── subfolder_13 │  │  └── file_3717 │  ├── subfolder_14 │  │  └── file_9825 │  ├── subfolder_15 │  │  └── file_14953 │  ├── subfolder_16 │  │  └── file_12760 │  ├── subfolder_17 │  │  └── file_8490 │  ├── subfolder_18 │  │  └── file_14577 │  ├── subfolder_19 │  │  └── file_11999 │  ├── subfolder_2 │  │  └── file_24557 │  ├── subfolder_20 │  │  └── file_27957 │  ├── subfolder_21 │  │  └── file_158 │  ├── subfolder_22 │  │  └── file_1361 │  ├── subfolder_23 │  │  └── file_27370 │  ├── subfolder_24 │  │  └── file_4919 │  ├── subfolder_3 │  │  └── file_30149 │  ├── subfolder_4 │  │  └── file_5352 │  ├── subfolder_5 │  │  └── file_27907 │  ├── subfolder_6 │  │  └── file_14716 │  ├── subfolder_7 │  │  └── file_1989 │  ├── subfolder_8 │  │  └── file_7850 │  └── subfolder_9 │  └── file_31831 ├── folder_2 │  ├── subfolder_1 │  │  └── file_25406 │  ├── subfolder_10 │  │  └── file_1439 │  ├── subfolder_11 │  │  └── file_21028 │  ├── subfolder_12 │  │  └── file_13026 │  ├── subfolder_13 │  │  └── file_3717 │  ├── subfolder_14 │  │  └── file_9825 │  ├── subfolder_15 │  │  └── file_14953 │  ├── subfolder_16 │  │  └── file_12760 │  ├── subfolder_17 │  │  └── file_8490 │  ├── subfolder_18 │  │  └── file_14577 │  ├── subfolder_19 │  │  └── file_11999 │  ├── subfolder_2 │  │  └── file_24557 │  ├── subfolder_20 │  │  └── file_27957 │  ├── subfolder_21 │  │  └── file_158 │  ├── subfolder_22 │  │  └── file_1361 │  ├── subfolder_23 │  │  └── file_27370 │  ├── subfolder_24 │  │  └── file_4919 │  ├── subfolder_3 │  │  └── file_30149 │  ├── subfolder_4 │  │  └── file_5352 │  ├── subfolder_5 │  │  └── file_27907 │  ├── subfolder_6 │  │  └── file_14716 │  ├── subfolder_7 │  │  └── file_1989 │  ├── subfolder_8 │  │  └── file_7850 │  └── subfolder_9 │  └── file_31831 └── script.sh 50 directories, 49 files $