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

什么';在bash中移动多个通配符最有效的方法是什么?,bash,wildcard,mv,Bash,Wildcard,Mv,重写以下内容最有效的方法是什么: mv *.jpg ~/Pictures && mv *.gif ~/Pictures && mv *.png ~/Pictures 你可以分成一组 mv *.{jpg,gif,png} ~/Pictures 如果您担心文件太多,导致参数列表太长 find -regex ".*\.\(jpg\|gif\|png\)" -print0 | xargs -r0 mv --target='~/Pictures' 你可以分成一组 mv

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

mv *.jpg ~/Pictures && mv *.gif ~/Pictures && mv *.png ~/Pictures
你可以分成一组

mv *.{jpg,gif,png} ~/Pictures
如果您担心文件太多,导致参数列表太长

find -regex ".*\.\(jpg\|gif\|png\)" -print0 | xargs -r0 mv --target='~/Pictures'
你可以分成一组

mv *.{jpg,gif,png} ~/Pictures
如果您担心文件太多,导致参数列表太长

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

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

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

如果你谈论的是很多文件,你必须注意不要超出命令行大小的限制,但是你可能会考虑使用
find
xargs
(我不会通过详细描述来使解决方案复杂化,特别是因为在SO网络的其他地方可能有一个扩展问题的答案).

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

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

如果你谈论的是很多文件,你必须注意不要超出命令行大小的限制,但是你可能会考虑使用
find
xargs
(我不会通过详细描述来使解决方案复杂化,特别是因为在SO网络的其他地方可能有一个扩展问题的答案).

或更笼统地说出几个来源(这就是上面的扩展)
mv*.jpg*.gif*.png~/Pictures
——假设您没有特别使用
&
组合器来防止在移动jpg文件失败时复制gif文件。或者更一般地说,命名多个源(这是上面展开的内容)
mv*.jpg*.gif*.png~/Pictures
——假设在移动jpg文件失败时,您没有特别使用
&
组合器来防止复制gif文件。