假设我有两个文件夹: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
$