我有一个文件(PDF),我想在同一个文件夹中拥有许多相同的副本(200个就好了),命名为file-001
,file-002
等等。
我该怎么做?
答案1
你可以做类似的事情
< file tee file-{001..200}
然而,如果介质无法读取,无论它上面有多少份副本都无济于事——从根本上来说,备份需要多样性。
请注意,它将tee
标准输入写入标准输出以及每个给定文件 - 对于大文件,或者包含二进制数据或其他可能干扰终端设置的特殊字符的文件,您可能希望将标准输出转储到位存储桶
< file > /dev/null tee file-{001..200}
答案2
这是一个经典的案例,表明 shell tricks 有很大帮助。
for i in {000..199}; do cp file file-$i; done
和我知道这是个玩笑,但如果您想要随机 _
或-
将数字与名称分开,您可以使用:
for i in {000..199}; do
cp file file$(cat /dev/urandom | tr -dc '_-' | fold -w 1 | head -n 1 )$i;
done
(多行有助于提高可读性......)
:-P
答案3
要创建文件的单个副本,您可能知道可以使用cp
:
cp file file-001
现在,要对文件进行更多复制,您可以结合cp
使用xargs
。在您的例子中:
echo file-{001..200} | xargs -n 1 cp file
将复制file
到file-001
,,file-002
...,file-200
。请参阅man xargs
以了解更多信息。
答案4
和往常一样,python 卡车来晚了,但是:
使其可执行,将其拖到终端窗口上,将要复制的文件拖到终端窗口上并设置副本数:
script file number_ofcopies
前导零的数量是自动设置的,文件被命名为file_001.pdf
,file_002.pdf
,文件编号放在前擴展。
剧本:
#!/usr/bin/env python3
import sys
import shutil
orig = sys.argv[1]; n = sys.argv[2]; size = len(str(n)); out = (orig[:orig.rfind(".")], orig[orig.rfind("."):])
for item in [out[0]+"_"+(size-len(str(item)))*"0"+str(item)+out[1] for item in range(1, int(n)+1)]:
shutil.copyfile(orig, item)