【问题标题】:What's the most efficient way to move multiple wildcards in bash?在 bash 中移动多个通配符的最有效方法是什么?
【发布时间】:2011-11-13 14:46:08
【问题描述】:

重写以下内容最有效的方法是什么:

mv *.jpg ~/Pictures && mv *.gif ~/Pictures && mv *.png ~/Pictures

【问题讨论】:

    标签: bash wildcard mv


    【解决方案1】:

    你可以组合成一个

    mv *.{jpg,gif,png} ~/Pictures
    

    如果您担心文件过多导致参数列表过长

    find -regex ".*\.\(jpg\|gif\|png\)" -print0 | xargs -r0 mv --target='~/Pictures'
    

    【讨论】:

    • 或更一般地命名几个来源(这是上面扩展的内容); mv *.jpg *.gif *.png ~/Pictures -- 假设您不是很专门地使用 && 组合器来防止在移动 JPG 文件失败时复制 GIF 文件。
    【解决方案2】:

    高效?文件名计算中的任何效率都可能被实际复制所淹没,但您可以尝试:

    mv *.jpg *.gif *.png ~/Pictures
    

    如果您正在谈论 很多 文件,则必须注意违反命令行大小限制,但随后您可能会考虑使用 find 和 @987654323 @ (我不会通过完整描述来使解决方案复杂化,特别是因为在 SO 网络的其他地方可能有对该扩展问题的答案)。

    【讨论】:

      【解决方案3】:
      shopt -s nocaseglob
      mv *.{jpg,gif,png} ~/Pictures
      

      【讨论】:

        猜你喜欢
        • 2011-09-23
        • 1970-01-01
        • 2015-07-14
        • 2020-06-22
        • 1970-01-01
        • 1970-01-01
        • 2011-06-23
        • 1970-01-01
        • 2010-10-24
        相关资源
        最近更新 更多