Какой самый эффективный способ переместить несколько подстановочных знаков в bash? - PullRequest
1 голос
/ 09 сентября 2011

Какой самый эффективный способ переписать следующее:

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

Ответы [ 3 ]

3 голосов
/ 09 сентября 2011

Вы можете сгруппировать в один

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

Если вы беспокоитесь о слишком большом количестве файлов, вызывающих слишком длинный список аргументов

find -regex ".*\.\(jpg\|gif\|png\)" -print0 | xargs -r0 mv --target='~/Pictures'
2 голосов
/ 09 сентября 2011

Эффективное?Любая эффективность в вычислениях имен файлов может быть сведена на нет фактическим копированием, но вы можете попробовать:

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

Если вы говорите много файлов, выВам придется остерегаться превышения предельного размера командной строки, но тогда вы, вероятно, захотите использовать find и xargs (я не буду усложнять решение, описав это полностью, тем более, что, вероятно, есть ответ наэтот расширенный вопрос в другом месте в сети SO).

0 голосов
/ 09 сентября 2011
shopt -s nocaseglob
mv *.{jpg,gif,png} ~/Pictures
...