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
.