zmv
руководство находится в zshcontrib
страница справочника. Можно достигнуть его непосредственно с
LESS="$LESS+/^ *zmv *\\[" man zshcontrib
(или LESS=$LESS+/zmv man zshcontrib
который берет Вас несколько строк далее потому что zmv
упоминается в описании zcp
). Можно использовать man zshall
вместо man zshcontrib
если zshall
страница справочника доступна в Вашей системе.
При использовании Информации можно достигнуть ее путем выполнения info zsh
и ввод i
затем ввод zmv
.
info --index-search=zmv zsh
У руководства zsh есть довольно подробный раздел по zmv
. Поиск zmv
на этом сайте поднимет несколько примеров использования переменной сложности.
Можно выполнить пробный прогон с zmv -n
(-n
распространенный способ запросить пробный прогон).
Извлечь выгоду из zmv
и друзья, это помогает иметь код как следующее в Вашем ~/.zshrc
:
autoload zmv
alias zmv='noglob zmv'
alias zcp='noglob zmv -C'
alias zln='noglob zmv -L'
alias zsy='noglob zmv -Ls'
Если Вы имеете удар и не заботитесь о также соответствии файлам как apple.not-a-number
, попробовать
shopt -s extglob
mv apple.!(0) /new/directory
при использовании удара, необходимо смочь использовать
mv apple.[^0]* /other/directory/
это переместит любые файлы, из которых расширение не запускается с 0 ("^" в начале [], означает "не" в ударе). Если Вы уверены, что существует только один символ как окончание, Вы могли бы также использовать
mv apple.[^0] /other/directory/
и если необходимо удостовериться только файлы, которые заканчиваются в числах, Вы могли использовать
shopt -s extglob
mv apple.@([1-9])*([0-9]) /other/directory/
это не соответствовало бы яблоку 01 или подобный хотя....
и последний, который должен получить все файлы яблока, заканчивающиеся в числах
shopt -s extglob
mv apple.*([1-9]|[0-9]+([0-9])) /other/directory/
[1-9][0-9]*
будет на самом деле соответствовать любому шаблону, который начинается с двух цифр в диапазоне, которому соответствовали бы 10-99 сопровождаемых чем-либо, например, 23apples.
– jw013
05.08.2011, 15:49
extglob
, Вы получаете питание regexps, но в подстановочном синтаксисе. zsh аналог к этим, которыми управляет удар, должен использовать setopt ksh_glob
вместо shopt -s extglob
, или использовать setopt extended_glob
затем mv apple.*~apple.0 /other/directory/
.
– Gilles 'SO- stop being evil'
06.08.2011, 03:02
Быть столь конкретным, как Вы хотите на файле переместиться а не переместиться
find /source/directory -maxdepth 1 -name "apple.*" ! -name "apple.0" -exec mv {} /new/directory \;
bash: !: event not found
брошен. – Olgun Kaya 05.08.2011, 12:13ls
,egrep
иmv
с каналами. – Olgun Kaya 05.08.2011, 12:15&&
оператор для объединения их. Сначала необходимо работатьshopt -s extglob
опция установить оболочку для использования расширенного globing режима затем можно использовать тот шаблон шарика. Путем этот ответ отформатирован, оболочка пытается сделать globing на командной строке, прежде чем любая из команд (включая ту о включении опции) будет выполнена. – Caleb 05.08.2011, 15:16shopt -s extglob
затем в любом после команды или позже в Вашем сценарии используют тот шаблон. – Caleb 05.08.2011, 15:17