Regex Substituir o nome do arquivo de acréscimo

3 respostas

3
[vagrant@vm-one ~]$ ls
1111_2222.png  1111_4444.png  1111_6666.png
[vagrant@vm-one ~]$ for f in 'ls | egrep '[0-9]+_[0-9]+\.png''; do mv "$f" "${f/.png/_t.png}"; done
[vagrant@vm-one ~]$ ls
1111_2222_t.png  1111_4444_t.png  1111_6666_t.png

Fontes

  1. O fragmento ls | egrep foi recuperado de aqui

  2. O mv $f ${f/.png/_t.png} com base em esta resposta

por 03.04.2015 / 21:41
2

Isso funciona para mim no meu teste ...

shopt -s globstar; 
for i in **; do
    test -f ${i} || continue;
    ext=${i##*.};
    echo mv $i ${i%%.${ext}}_t.${ext}; 
done;
shopt -u globstar;

Espera que você esteja no diretório base correto. Observe que não faz suposições sobre qual extensão o arquivo é ou qual é o 'início' do formato do nome do arquivo. Tenha cuidado.

    
por 03.04.2015 / 21:37
0

Simples (talvez demais), mas também funciona neste caso:

find . -regextype posix-extended \
  -regex '.*[[:digit:]]{4}_[[:digit:]]{4}\.png' \
  -type f -exec rename .png _t.png {} \;
    
por 04.04.2015 / 00:58