【问题标题】:cp copy command with bash brace expansion带有 bash 大括号扩展的 cp 复制命令
【发布时间】:2011-04-07 12:14:32
【问题描述】:

在 bash 提示符下我可以执行此复制

cp file.txt test1.txt

但是如果我尝试将 file.txt 复制到这样的几个文件中

cp file.txt test{2..4}.txt

我得到错误

cp: 目标`test4.txt' 不是目录

【问题讨论】:

    标签: bash bash-completion


    【解决方案1】:

    这不是关于 bash,而是关于 cp。如果您为 cp 提供了两个以上的参数,则最后一个参数应该是所有其他参数都将复制到的目录。

    for f in test{2..4}.txt ; do cp file.txt $f ; done
    

    【讨论】:

      【解决方案2】:

      嗯,你必须了解 *nix shell 的工作原理。

      在 DOS/Windows 世界中,通配符由程序处理。因此,例如xcopy *.txt *.bak 意味着xcopy 被赋予了两个参数:*.txt*.bak。如何解释通配符完全取决于xcopy

      在 *nix 世界中,通配符由 shell 处理。例如,类似的命令xcopy *.txt *.bak 首先扩展为xcopy <list of files ending with .txt> <list of files ending with .back>。从而假设file1.txtfile4.txt的存在,再加上另一个文件old.bak,命令会扩展为xcopy file1.txt file2.txt file3.txt file4.txt old.bak

      对于cp 命令,这正是Michael 所写的:如果你给cp 多于2 个args,最后一个arg 必须是一个目录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-26
        • 2017-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-15
        • 1970-01-01
        相关资源
        最近更新 更多