Copie os arquivos na mesma pasta e substitua o ano em seu nome

3

Como posso copiar muitos arquivos no mesmo diretório substituindo o ano em seu nome?

Eu tenho isso (pode ser diferente nome do arquivo e extensões):

filename1-2014.ext
filename2-2014.ext
filename3-2014.ext
...
filenamen-2014.ext

E eu quero isso:

filename1-2014.ext
filename1-2015.ext
filename2-2014.ext
filename2-2015.ext
filename3-2014.ext
filename3-2015.ext
...
filenamen-2014.ext
filenamen-2015.ext

Eu posso fazer um script para fazer isso, mas eu estou querendo saber se existe uma maneira fácil de fazer isso?

    
por jherran 04.02.2015 / 19:12

2 respostas

3
  • Com a localização:

    find . -type f -name '*2014*' -exec bash -c 'cp "$0" "${0/2014/2015}"' {} \;
    
  • No loop do shell:

    for file in *2014*; do
        cp "$file" "${file/2014/2015}"
    done
    
por 04.02.2015 / 19:24
2
for i in *-2014.ext; do
  cp "$i" "${i%2014.ext}2015.ext"
done

Para cada arquivo, remova o sufixo antigo e adicione o novo.

Se você tem diferentes extensões, você pode usar o recurso de substituição de padrões do bash:

for i in *-2014.*; do
  cp "$i" "${i/2014/2015}"
done
    
por 04.02.2015 / 19:19

Tags