如何轻松制作一个文件的5个副本?


13

我可以使用以下方法将5个文件移动到某处:

$ mv my-{1..5}.jpg /path/to/dir/

如何轻松地将一个文件复制5次

# doesn't work
$ cp my.jpg my-{1..5}.jpg

是否可以不使用for loop

Answers:


12

尝试这个

for f in {1..5}; do cp my.jpg my$f.jpg; done

(这里没有bash可以自己尝试)


6
替换for f in $ffor f in $(seq 5)
Dan D.

1
是否可以使用for loop
2012年

@kev-我一直都看到这种方式;另外,更多readabe。
2012年

3
@ kev,for循环有什么问题?这就是for循环的目的……
soandos

3
@DanD .:seq在Bash中不是必需的。您可以使用for f in {1..5}for ((f=1; f<=5; f++))
已暂停,直到另行通知。

6

这是一种无for循环且没有使用风险的方法eval

printf '%s\n' {1..5} | xargs -I {} cp my.jpg my-{}.jpg

它实际上仍然是一个循环。


4

尝试tee

tee <my.jpg >/dev/null my-{1..5}.jpg

parallel

parallel cp my.jpg ::: my-{1..5}.jpg

3

您可以无循环执行..使用tee{}括号扩展。

编辑:(根据丹尼斯·威廉姆森的评论进行了修正:

对于名为“ my-.jpg”的文件

pre="my-"; suf=".jpg"
<"$pre$suf" tee "$pre"{1..5}"$suf" >/dev/null

1
不必使用eval。<"$pre$suf" tee "$pre"{1..5}"$suf"效果很好。
暂停,直到另行通知。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.