Kong Asked: 2019-11-02 07:25:03 +0800 CST2019-11-02 07:25:03 +0800 CST 2019-11-02 07:25:03 +0800 CST 如何将所有文件夹复制到同一目录中? 772 如果我有数千个名为a/ b/ c/etc 的文件夹,我如何多次复制它们及其内容,以便为复制的文件夹赋予不同的名称,例如a-copy1/ b-copy1/ c-copy1/ ... a-copy12/ b-copy12/ c-copy12/ 16.04 4 个回答 Voted Best Answer George Udosen 2019-11-02T08:03:40+08:002019-11-02T08:03:40+08:00 这个脚本应该使这成为可能: #! /usr/bin/env bash set -e for i in /path/to/folder do if [ -d "$i" ] then for r in $(seq 1 5) do cp -r "$i" "$i"\-copy"$r" done fi done 信息: for r in $(seq 1 5):这允许您选择要创建的副本数。 if [ -d "$i" ]: 检查目标是否为文件夹。 cp -r "$i" "$i"\-copy"$r": 执行复制。 set -e: 停止第一个错误。 样本数据: a b c d e f 样本输出: a a-copy3 b b-copy3 c c-copy3 d d-copy3 e-copy2 e-copy5 f-copy2 f-copy5 a-copy1 a-copy4 b-copy1 b-copy4 c-copy1 c-copy4 d-copy1 d-copy4 e e-copy3 f f-copy3 a-copy2 a-copy5 b-copy2 b-copy5 c-copy2 c-copy5 d-copy2 d-copy5 e-copy1 e-copy4 f-copy1 f-copy4 waltinator 2019-11-02T07:56:23+08:002019-11-02T07:56:23+08:00 如果您有“数千个”文件和/或目录要处理,find并且xargs是首选工具。阅读man find和man xargs。 find . -maxdepth 1 -type d -print0 |\ xargs -0 --no-run-if-empty bash_script 文件在哪里bash_script(模式 755),在您$PATH包含用户编写的脚本来进行复制。 dc37 2019-11-02T07:58:17+08:002019-11-02T07:58:17+08:00 在您的目录中尝试: ls | grep "pattern" | xargs -i mkdir "{}-copy1" 您将获得所有具有“模式”的文件夹都将重复并在最后使用 -copy1 重命名。 Namba 2019-11-02T08:21:12+08:002019-11-02T08:21:12+08:00 您可以编写一个简单的 bash 脚本,例如: for i in {1..10}; do for dir in $(find /src/dir -maxdepth 1 -type d); do cp -r $dir /dst/dir/$dir-copy$i; done done 此代码段会将位于 /src/dir 上的目录复制 10 个副本到 /dst/dir
这个脚本应该使这成为可能:
信息:
for r in $(seq 1 5)
:这允许您选择要创建的副本数。if [ -d "$i" ]
: 检查目标是否为文件夹。cp -r "$i" "$i"\-copy"$r"
: 执行复制。set -e
: 停止第一个错误。样本数据:
样本输出:
如果您有“数千个”文件和/或目录要处理,
find
并且xargs
是首选工具。阅读man find
和man xargs
。文件在哪里
bash_script
(模式 755),在您$PATH
包含用户编写的脚本来进行复制。在您的目录中尝试:
您将获得所有具有“模式”的文件夹都将重复并在最后使用 -copy1 重命名。
您可以编写一个简单的 bash 脚本,例如:
此代码段会将位于 /src/dir 上的目录复制 10 个副本到 /dst/dir