将文件从多个目录复制到另一个多目录
让我们假设,我有两个文件夹; 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_1
和folder2
的文件夹中运行此命令:
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 $