如何以规则结尾多次复制某个文件?

Tim*_*Tim 13 command-line files filemanager

我有一个单一的文件(PDF),我想有很多相同的复制品在同一文件夹(200将是很好)命名的file-001file-002等等。

我该怎么做?

ste*_*ver 22

你可以做类似的事情

< file tee file-{001..200}
Run Code Online (Sandbox Code Playgroud)

然而,如果介质变得不可读,则其上有多少副本并不重要——从根本上说,备份需要多样性

请注意,tee将其标准输入写入标准输出以及每个给定文件 - 对于大文件,或者对于包含可能干扰终端设置的二进制数据或其他特殊字符的文件,您可能希望将标准输出转储到位桶

< file > /dev/null tee file-{001..200}
Run Code Online (Sandbox Code Playgroud)

  • `tee file-{001..200} &lt; file &gt;/dev/null` 更清晰地寻找我。看到这个几乎重复的答案:[如何将文件复制到终端中的多个文件夹?](http://askubuntu.com/a/432818/147044) (4认同)

Rma*_*ano 21

这是 shell 技巧大有帮助的经典案例。

for i in {000..199}; do cp file file-$i; done
Run Code Online (Sandbox Code Playgroud)

而且我知道这是一个笑话,但是如果您想要一个随机数 _-将数字与名称分开,您可以使用:

for i in {000..199}; do 
    cp file file$(cat /dev/urandom | tr -dc '_-' | fold -w 1 | head -n 1 )$i; 
done
Run Code Online (Sandbox Code Playgroud)

(多行以提高可读性...)

:-P


Rad*_*anu 7

要制作文件的单个副本,您可能知道可以使用cp

cp file file-001
Run Code Online (Sandbox Code Playgroud)

现在,要对文件进行更多重复,您可以结合cp使用xargs. 在你的情况下:

echo file-{001..200} | xargs -n 1 cp file
Run Code Online (Sandbox Code Playgroud)

将复制filefile-001, file-002,... , file-200。查看man xargs更多信息。