Modifique para o comando para remover o número do final do nome do arquivo

1

Tudo,

Eu tenho mexido com o comando for para remover padrões de nomes de arquivos em massa.

Nome do arquivo de exemplo:

:Common:CBE.key_44643_1

Eu posso usar o seguinte comando para remover a parte: Common:

for f in *; do mv "$f" "${f#:Common:}";done

Para a vida de mim eu não consigo o comando para remover tudo à direita de .key. Abaixo está minha tentativa

for f in *; do mv "$f" "$(?<=crt)(?s)(.*$);done

O comando é executado, mas não há alteração no arquivo. Eu estou correndo isso em um mac.

    
por Dave P 09.09.2016 / 18:38

2 respostas

2

Uma maneira de fazer isso com o shell:

for f in *; do
    mv -- "$f" "${f%.key*}.key"
done
    
por 09.09.2016 / 18:47
2

Supondo que os nomes dos arquivos não contenham novas linhas ou barras invertidas:

for f in ./*
do
  mv "$f" "$(echo "$f" | sed 's/key_.*$/key/')
done
    
por 09.09.2016 / 18:43