Я предполагаю, что существуют репозитории как rpmfusion, которые отличают бесплатные и небесплатные пакеты для Fedora, Redhat и Centos.
Подробные инструкции относительно установки конфигурации пакета репозитория перечислены в:
http://rpmfusion.org/Configuration/
Детали о том, как включить другие репозитории в кратком руководстве по, в:
http://www.ehowstuff.com/how-to-prepare-other-yum-repositories-for-rhelcentos-5/
В Bash:
mv -t newfolder *.@(png|jpg)
Это требует extglob опции:
$ shopt extglob
extglob on
Если это от Вас, может включить его с
$ shopt -s extglob
mv -t newfolder *.(png|jpg)
zsh
синтаксис, но необходимо включить его с:
setopt extended_glob
Строго говоря необходимо записать это:
mv -t newfolder -- *.(png|jpg)
Как иначе, если некоторые имена файлов запускаются с a -
символ, это не будет работать правильно.
mv -t newfolder -- *.@(png|jpg)
ksh
синтаксис. Это может быть распознано zsh
если Вы поворачиваетесь kshglob
опция на (setopt kshglob
) и ударом, если Вы поворачиваетесь extglob
опция на (shopt -s extglob
).
Однако отметьте это ksh
и bash
оба страдают от одной проблемы в том экземпляре: если существует нет png
ни jpg
файл, *.@(png|jpg)
будет передан нетронутый mv
, и если там будет существовать файл тем (по общему признанию необычным) именем, то это будет перемещено в newfolder
.
В bash
, можно избежать что проблема путем включения failglob
опция. В ksh
(последние версии только ksh93), лучшее, которое можно сделать, записать ~(N)*.@(png|jpg)
(который был бы эквивалентом nullglob
в ударе или (N)
спецификатор globbing в zsh), который заставил бы шаблон ни до чего не расширяться, если бы нет никакого файла соответствия, и Вы затем получили бы ошибку от mv
.
Как другие заявили, regex не является потребностью выполнить Вашу цель. Я предложу пример того, как выполнить это через regex, если ситуация действительно призывала к нему. Следующее будет работать в ударе:
files=();
for file in *;
[[ $file =~ \.(png|jpg)$ ]] && files+=("$file")
done
mv -t newfolder "${files[@]}"
Ответ Nykakin объясняет много. Только для добавления что-то указывает -
Нет ничего как regex в CLI
. Это всегда globbing
то, что Вы видите и используете.
Если это было бы чистым regex затем почему не файл и каталоги, запускающиеся с точки [.
] отображены, когда Вы вводите ls *
? В regex *
соответствия все правильное? Но это не имеет место с шариком.
*
в соответствиях regex ничто, так как это означает "0 или больше из последнего знака". .*
жадное соответствие всего.
– jordanm
07.02.2013, 19:14
~(E)
) но как много вещей ksh
, это немного повреждается дизайном.
– Stéphane Chazelas
07.02.2013, 22:06
Я не знаю ничего с regexs или любым изящным синтаксическим сахаром получать желаемый результат. Вот способ получить желаемый результат, тем не менее, который находит использование.
find . -maxdepth 1 -mindepth 1 -type f -name '*.png' -o -name '*.jpg' -exec mv -t newfolder {} +
mv -- *.png *.jpg newfolder
?
– tripleee
08.02.2013, 11:19
nullglob
зафиксировать это или просто проигнорировать ошибку. Во всяком случае моя точка действительно, что это - слишком сложное решение очень простой проблемы.
– tripleee
08.02.2013, 19:45