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

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

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

哪个脚本允许我这样做?

答案1

folder_1在包含和的文件夹中运行此命令folder2

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

出于安全考虑,我cp通过在实际命令echo前面添加命令来禁止该命令。查看它是否按您的要求执行,然后删除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
$ 

相关内容