linux终端如何复制文件夹,如何使用命令行将文件复制到多个文件夹?

问题描述

我试图用一个命令将文件test.txt复制到多个目录:

cp ~/test.txt ~/folder1 ~/folder2

但我没有成功。有没有办法在一个命令中执行此操作,以便我可以将文件甚至文件夹复制到多个目录?

最佳解决思路

cp可以从多个源复制,但无法复制到多个目标。有关详细信息,请参阅man cp。

我知道唯一可以复制/保存到多个目的地的bash命令是tee。

你可以在你的情况下使用它,如下所示:

tee ~/folder1/test.txt ~/folder2/test.txt < ~/test.txt

请注意,tee还将输入写入标准输出(stdout)。因此,如果您不想这样,可以通过将标准输出重定向到/dev/null来阻止它,如下所示:

tee ~/folder1/test.txt ~/folder2/test.txt < ~/test.txt >/dev/null

次佳解决思路

另一种实现复制到多个位置的方法是以下命令:

find dir1 dir2 -exec cp file.txt {} \;

如果dir1或dir2具有您不希望将文件复制到的sub-directories,请添加-maxdepth 0选项:

find dir1 dir2 -maxdepth 0 -exec cp file.txt {} \;

请注意,这将覆盖dir1和dir2中的每个文件以及file.txt的内容,此外还要复制它。要仅复制file.txt而不影响这些目录中的其他文件,请告诉find仅对目录执行操作:

find dir1 dir2 -type d -exec cp file.txt {} \;

第三种解决思路

命令

cp ~/test.txt ~/folder1 ~/folder2

尝试将两个文件(~/test.txt和~/folder1)复制到目标folder2。 (如果~/folder2存在且是一个目录,您将收到”omitting directory”警告)。

如果要制作文件test.txt的多个副本,则必须使用循环或多个命令…

for i in ~/folder1 ~/folder2; do cp ~/test.txt $i; done

(…如果文件名中嵌入了空格,请注意,您需要引用)。

要复制整个目录,您必须使用-r选项:

for i in ~/folder1 ~/folder2; do cp -r ~/folder3 $i; done

这将创建包含所有文件的~/folder1/folder3和~/folder2/folder3。

第四种思路

您可以创建帮助脚本,也可以使用xargs和打印功能(在本例中为echo):

echo firstDir secondDir | xargs -n 1 cp test

这将使用测试文件作为参数将每个目录作为cp函数的参数。

第五种思路

经过长时间的搜索,这项工作也像魅力一样!

for dir in *; do [ -d "$dir" ] && cp /path/file.txt "$dir" ; done

这会将file.txt复制到终端中当前位置的每个目录。

for dir in *; do [ -d "$dir" ] && cp -rf /path/folder "$dir" ; done

这会将文件夹复制到终端中当前位置的每个子目录。

我同意它希望它也有助于其他人。

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值