Renomeando arquivos removendo o carimbo do compilador

0

Dado

  1. lista de diretórios, por exemplo %código%
  2. fornecedor de compiladores, por ex. -gcc-M.N.0

o objetivo é varrer cada diretório e truncar todos os nomes de arquivo da seguinte forma:

intel-mkl/2018.1.163-gcc-7.1.0             -> intel-mkl/2018.1.163
exuberant-ctags/5.8-gcc-7.1.0              -> exuberant-ctags/5.8
superlu-dist/[email protected] -> superlu-dist/5.2.2

Quais são as estratégias eficientes e robustas?

    
por dantopa 19.03.2018 / 22:32

2 respostas

1

Isso pode funcionar para você:

Comece com seu conjunto de arquivos de amostra:

$ find . -type f -name '*-gcc-*'
./intel-mkl/2018.1.163-gcc-7.1.0
./superlu-dist/[email protected]
./exuberant-ctags/5.8-gcc-7.1.0

Aqui está um script para aparar -gcc- * do final de qualquer nome de arquivo:

$ cat ex.sh
#!/bin/bash
for i in $(find . -type f -name '*-gcc-*'); do
    mv "$i" "$(echo "$i" | sed -e 's/-gcc-.*$//')"
done

Execute o script:

$ bash ex.sh

Observe que os arquivos não contêm mais o sufixo -gcc- *:

$ find . -type f
./intel-mkl/2018.1.163
./superlu-dist/5.2.2
./exuberant-ctags/5.8
    
por 19.03.2018 / 22:39
1
Solução

find + bash :

find . -type f -name "*-gcc-[0-9]*" -exec bash -c 'fn=${1%-gcc-*}; mv "$1" "$fn"' _ {} \;
    
por 19.03.2018 / 22:53