Como renomear todos os arquivos na pasta com o nome terminando com “_backup”

4

Eu tenho um monte de imagens que foram de alguma forma renomeadas de myimage.jpg to myimage.jpg_backup , então as imagens no meu site não carregam mais. Como recursivamente eu encontraria todas as imagens terminando com _backup e removendo apenas a parte _backup enquanto preservava o resto do nome do arquivo?

Eu tentei algo assim:

sudo find . -name "*.jpg_backup" -exec rename -n 's/_backup$//' *.jpg_backup ';'

mas isso me dá um erro:

Can't rename *.jpg_backup *.jpg: No such file or directory
    
por Edmund 19.07.2013 / 19:01

2 respostas

6

tente rename -v 's/\.jpg_backup$/\.jpg/' *.jpg_backup o -v fornece a saída detalhada. veja aqui Como renomear

    
por TiloBunt 19.07.2013 / 19:14
3

Em um terminal , acesse o diretório onde estão esses arquivos (com cd /path/to/folder ). Se os arquivos não contiverem espaços em branco ou caracteres especiais \[*? , execute o seguinte comando:

for file in 'find . -name *.jpg_backup' ; do mv "$file" "${file%_backup}"; done

Se você acha que tem nomes de arquivos contendo espaços em branco ou caracteres globbing, use:

find . -type f -name '*.jpg_backup' -print0 \
| while IFS= read -r -d '' file ; do mv -- "$file" "${file%_backup}"; done

ou:

shopt -s globstar; 
for file in /path/to/folder/**/*.jpg_backup ; do mv -- "$file" "${file%_backup}"; done

Os comandos acima recursivamente encontrarão todos os arquivos *.jpg_backup da pasta atual e subpastas e irão renomeá-los para *.jpg . O último também analisa links simbólicos para diretórios.

    
por Radu Rădeanu 19.07.2013 / 19:11