linux 复制一个文件到多个目录 使用echo 、xargs 、cp
来自 https://blog.csdn.net/u010953692/article/details/79174417
我自己亲自做的 复制一个文件到多个目录 有大用
# echo /home/wwwroot/{aa,bb,cc}/public_html/templets/wap/images/index/hdp/ | xargs -n1 \cp -a index_hdp0.jpg #这是ok的
# echo /home/wwwroot/{aa,bb,cc}/public_html/templets/wap/images/index/hdp/ | xargs -d ' ' -I {} \cp -a index_hdp0.jpg {} #这个不行,是不能复制到 最后一个 cc 目录下的,为什么
由下面 cp -v 可以看到复制的信息, 最好一个 cc 复制时 多了一个 \n ,,所以不能复制到cc 这个目录下
[root@ebs-25879 ~]# echo /home/wwwroot/{aa,bb,cc}/public_html/templets/wap/images/index/hdp/ | xargs -d' ' -I {} \cp -a -v /home/wwwroot/xx/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg {}
`/home/wwwroot/xx/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg' -> `/home/wwwroot/aa/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg'
`/home/wwwroot/xx/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg' -> `/home/wwwroot/bb/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg'
`/home/wwwroot/xx/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg' -> `/home/wwwroot/cc/public_html/templets/wap/images/index/hdp/\n'
正确的做法 是在 echo 后面加上 -n (因为,每个echo 后面都会自动加上\n 加上 -n 后就不会自动加上\n了)
[root@ebs-25879 ~]# echo -n /home/wwwroot/{wap_shrszg_com,wap_shrszg_com,wap_shrszg_com}/public_html/templets/wap/images/index/hdp/ | xargs -d' ' -I {} \cp -a -v /home/wwwroot/wap_shrszg_cn/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg {}
`/home/wwwroot/wap_shrszg_cn/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg' -> `/home/wwwroot/wap_shrszg_com/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg'
`/home/wwwroot/wap_shrszg_cn/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg' -> `/home/wwwroot/wap_shrszg_com/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg'
`/home/wwwroot/wap_shrszg_cn/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg' -> `/home/wwwroot/wap_shrszg_com/public_html/templets/wap/images/index/hdp/index_hdp0-2020-10-26.jpg'
cp 快捷命令:复制文件到多个目录
导读 | 在学习 Linux 的过程中,对于新手而言总是会使用几个命令来完成一个简单的任务。对正在熟悉使用终端的人这是很容易理解的行为。然而,如果你想要成为一个老手,学习我说的“快捷命令”会显著减少时间浪费。在本篇中,我们会用一个简单的方法在 Linux 中用一个命令来将目录复制到多个文件夹中。 |
在 Linux 中,cp 命令常被用于从一个文件夹中复制文件到另一个文件夹中,最简单的语法如下:
# cp [options….] source(s) destination
另外,你也可以使用高级复制命令,它可以在复制大的文件或文件夹时显示进度条。
看下下面的命令,通常你会使用两个不同的命令来将相同的文件复制到不同的文件夹中:
# cp -v /home/aaronkilik/bin/sys_info.sh /home/aaronkilik/test # cp -v /home/aaronkilik/bin/sys_info.sh /home/aaronkilik/tmp
假设你想要复制一个特定文件到 5 个或者更多的文件夹中,这意味着你需要输入 5 次或者更多的cp命令么?
要摆脱这个问题,你可以用 cp 命令与 echo命令、管道、xargs 命令一起使用:
# echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh
上面的命令中,目录的路径(dir1、dir2、dir3...dirN)被管道作为输入到 xargs 命令中,含义是:
1.-n 1 - 告诉 xargs 命令每个命令行最多使用一个参数,并发送到 cp 命令中。
2.cp – 用于复制文件。
3.-v– 启用详细模式来显示更多复制细节。-v (verbose)
试试阅读 cp、 echo 和 xargs 的 man 页面来找出所有有用和高级的用法信息:
$ man cp $ man echo $ man xargs
就是这样了,你可以在下面的评论区给我们发送主题相关的问题或者反馈。你也可以阅读有关 progress 命令来帮助监控运行中的(cp、mv、dd、tar 等等)的进度。
本文转载自:http://www.linuxprobe.com/copy-files-multiple-directories.html
免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/