次を書き直す最も効率的な方法は何ですか。
mv *.jpg ~/Pictures && mv *.gif ~/Pictures && mv *.png ~/Pictures
1つにグループ化できます
mv *.{jpg,gif,png} ~/Pictures
引数リストが長すぎる原因となるファイルが多すぎることを心配している場合
find -regex ".*\.\(jpg\|gif\|png\)" -print0 | xargs -r0 mv --target='~/Pictures'
効率的?ファイル名の計算における効率は、実際のコピーによって圧倒される可能性がありますが、次のことを試すことができます。
mv *.jpg *.gif *.png ~/Pictures
多くのファイルについて話している場合は、コマンドラインのサイズ制限を超えないように注意する必要がありますが、おそらく and の使用を検討することfind
になるでしょうxargs
(完全に説明することで解決策を複雑にするつもりはありません。特にSO ネットワークの他の場所に、その拡張された質問に対する回答がある可能性があります)。
shopt -s nocaseglob
mv *.{jpg,gif,png} ~/Pictures