dka*_*hik 3 command-line cp files
我正在尝试将一个文件复制到 10 个文件。例如,假设我有一封名为 的电子邮件test1.eml
。我想要同一个文件的 10 个副本。
当我在互联网上搜索时,我遇到了这个 stackoverflow 线程/sf/ask/668537831/并遵循其中之一提到的 eval 命令社区成员'knittl'。
eval 'cp test1.eml 'test{2..10}.eml';'
Run Code Online (Sandbox Code Playgroud)
上面提到的命令有效并且符合我的要求。有没有其他替代/更优雅的命令来实现这一点,因为提到 eval 命令的人告诉它这是一种肮脏的黑客攻击。
tee >test2.eml test{3..10}.eml < test1.xml
Run Code Online (Sandbox Code Playgroud)
只会读取一次源代码并只执行一个命令。对于大文件,它可能不会更有效,并且可能会鼓励碎片化,就像tee
在每个输出文件中依次写入数据块一样。它还根据您当前的 umask 创建具有权限的文件,而不是部分或完全复制原始权限,cp
具体取决于选项。
如果你想保存打字,只需zsh
用作你的外壳({2..10}
顺便说一下,这些结构来自哪里)
for f (test{2..10}.eml)cp test1.eml $f
Run Code Online (Sandbox Code Playgroud)
这和你的一样短:
eval 'cp test1.eml 'test{2..10}.eml';'
Run Code Online (Sandbox Code Playgroud)
更直观/易读,更容易推广到带有更多问题字符的文件名。
随着zsh
假设你没有禁用multios
选项,你也可以这样做:
<test1.eml >test{2..10}.eml
Run Code Online (Sandbox Code Playgroud)
在那里,zsh
在tee
内部进行并调用cat
. 所以它的效率略低于该tee
方法。