Em zsh, coloque o seguinte em seu .zshrc (ou execute-os na linha de comando por uma única vez):
autoload zmv
alias zcp='zmv -C'
alias zln='zmv -L'
A % funçãozmv combinada com zsh's wildcards e recursos globbing permitem fácil renomeação e cópia de arquivos. Aqui estão várias maneiras de fazer o que você quer:
zmv '(**/)cateory-icon-(*)' '${1}category-icons-$2'
zmv -w '**/cateory-icon-*' '${1}category-icons-$2'
zmv '**/cateory-icon-(*)' '$f:h/category-icons-$1'
Explicação de alguns recursos do zsh:
-
**/ corresponde arquivos em subdiretórios de forma recursiva.
- Os parênteses na expressão de origem designam grupos.
$NUM ou ${NUM} na expressão de substituição é substituído pela parte do nome original que contém o NUMth grupo.
- Os parênteses em torno de
** são um pouco peculiares: você só pode colocá-los em torno de **/ , nem mais nem menos.
- A opção
-w para zmv coloca automaticamente cada caractere curinga em um grupo (para ** , é a parte **/ que está em um grupo, com o / à direita).
-
$f na substituição significa todo o nome do arquivo de origem.
-
$VAR:h significa a parte do diretório de $VAR . Isso geralmente é de $VAR até o último / , mas todos os casos de borda ( foo , foo/ , / ,…) são tratados corretamente. O nome base está disponível como $VAR:t .