在bash中移动多个通配符的最有效方法是什么?

时间:2011-09-09 08:34:16

标签: bash wildcard mv

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

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

3 个答案:

答案 0 :(得分:3)

您可以分组为一个

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

如果你担心导致参数列表太长的文件太多

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

答案 1 :(得分:2)

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

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

如果您正在讨论文件的批次,则必须注意吹出命令行大小限制,但之后您可能会考虑使用findxargs(我不会通过完全描述这一点来使解决方案复杂化,特别是因为在SO网络的其他地方可能有一个扩展问题的答案)。

答案 2 :(得分:0)

shopt -s nocaseglob
mv *.{jpg,gif,png} ~/Pictures