Я хотел бы скопировать файлы с несколькими расширениями в один каталог назначения.
Например, я могу использовать следующую команду, чтобы скопировать все файлы .txt в рабочем каталоге в каталог с именем destination
:
cp -v *.txt destination/
И я могу использовать следующее, чтобы скопировать все каталоги .png в рабочем каталоге destination
:
cp -v *.png destination/
Но это занимает много времени, чтобы ввести их как отдельные команды (даже с использованием истории команд). Итак, есть ли способ , что я могу сказать , cp
чтобы скопировать файлы с любым шаблоном *.txt
или шаблоном *.png
к destination
? В идеале я хотел бы иметь возможность указать более двух моделей - как инструктаж , cp
чтобы скопировать все *.txt
или *.png
или *.jpg
файлы destination
, например.
Я уверен, что все это возможно с помощью сценария оболочки - я использую bash
, например - но есть ли способ сделать это проще, просто с консоли? Могу ли я как-то использовать расширение скобки, чтобы сделать это?
Я знаю, что можно копировать все файлы в рабочем каталоге, кроме тех, которые соответствуют определенным заданным шаблонам , но, поскольку мой рабочий каталог содержит гораздо больше расширений файлов, которые я не хочу копировать, чем те, которые я делаю , это будет проблемой.
Есть ли у вас какие-либо мысли по этому поводу?
cp -v *.txt *.png destination/
?Ответы:
Расширение скобки сделает работу.
man bash
и искатьBrace Expansion
.РЕДАКТИРОВАТЬ:
В соответствии с запросом OP, в приведенной выше команде отсутствовал подробный параметр:
источник
cp data/images/*.{jpg,jpeg,png,mp4} destination/
аmp4
файл не существует, я получаюNo such file or directory
ошибку, которая нарушает работу сценария. Могу ли я сделать несколько расширений изящно обрабатывать любые пропущенные форматы?Это работает!
источник