linux 多文件复制文件,关于cp:Linux命令将一个文件复制到多个文件

在Linux上是否有单行命令/脚本将一个文件复制到多个文件?

cp file1 file2 file3

将前两个文件复制到第三个文件中。 有没有办法将第一个文件复制到其余文件中?

问题是您是否要让file2和file3占用独立的块?

是否

cp file1 file2 ; cp file1 file3

算作"单行命令/脚本"?怎么样

for file in file2 file3 ; do cp file1"$file" ; done

或者,对于"复制"的感觉稍微宽松一些:

tee /dev/null

为tee加一

@ J.F.Sebastian:是的,但是由于OP显然希望此功能可用于两个以上的目标文件,因此我使用了突出显示对此格式的支持的表格。也许我应该写tee file2 file3 file4并放弃了两个文件的并行性?

不知道这是否仍然有意义,但是我只想指出,使用tee解决方案不会保留初始文件权限。

@bioShark:是的-它仅复制文件的内容。这就是为什么我将其描述为"稍微宽松的复制感"。

只是为了好玩,如果您需要一大堆文件teedevnull

just for fun, if you need a big list of files:

tee/dev/null- Kelvin Feb 12 at 19:52

但是有一点错字。应该:

tee/dev/null

并且如上所述,这不会复制权限。

您可以使用bash括号扩展中的范围来改进/简化for的复制方法(@ruakh回答):

for f in file{1..10}; do cp file $f; done

这会将file复制到file1, file2, ..., file10中。

检查资源:

http://wiki.bash-hackers.org/syntax/expansion/brace#ranges

for FILE in"file2""file3"; do cp file1 $FILE; done

cat file1 | tee file2 | tee file3 | tee file4 | tee file5 >/dev/null

它可能可以工作,但是非常不灵活。如果您要复制大文件,则效率可能很低。

@StephenC它更接近原始查询

如果您使用cat和tee,也可能会这样:cat file1 | tee文件2文件3文件4> / dev / null

使用类似以下内容的东西。它适用于zsh。

cat file > firstCopy > secondCopy > thirdCopy

要么

cat file > {1..100} - for filenames with numbers.

这对于小文件很有用。

对于较大的文件,应使用前面提到的cp脚本。

假定外壳为zsh

为什么文件大小很重要?受RAM大小限制?

因为猫加工

您可以使用shift:

file=$1

shift

for dest in"$@" ; do

cp -r $file $dest

done

shift的作用是什么?

您可以为此使用标准脚本命令:

重击:

for i in file2 file3 ; do cp file1 $i ; done

我能想到的最简单/最快速的解决方案是for循环:

for target in file2 file3 do; cp file1"$target"; done

以下是一个肮脏的hack(我强烈建议不要这样做,并且无论如何只能在bash中使用):

eval 'cp file1 '{file2,file3}';'

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值