Adiciona extensão a uma lista de arquivos

1

Estou tentando determinar um método perl para adicionar uma extensão a uma lista de arquivos. Eu já posso renomear uma lista de arquivos com uma certa extensão para alguma outra extensão, mas eu preciso poder fazer isso para qualquer nome de arquivo, mesmo que ele já tenha uma extensão.

Por exemplo, tenho uma lista de arquivos como:

file1
file2
file3
ps.dir

E eu quero renomeá-los para filename.extension :

file1.bad
file2.bad
file3.bad
ps.dir.bad
    
por tlrthnu 08.01.2016 / 20:49

3 respostas

3

No shell, se você tiver o Perl rename instalado (às vezes chamado prename ):

rename -v 's/$/.bad/' *

Se você tiver muitos arquivos para o shell * glob para lidar com todos eles, você pode mixar'n'match com find desta forma (também substitua + por \; , se necessário):

find . -maxdepth 1 -exec rename -v 's/$/.bad/' {} +

Para o Perl, use apenas move de um módulo padrão:

use File::Copy;
for (<*>) { move($_, "$_.bad"); }
    
por 08.01.2016 / 21:10
2

Assumindo que não há espaços nos nomes dos arquivos:

for file in *; do mv "${file}" "${file}.bad"; done
    
por 08.01.2016 / 20:54
1
[ ! . -sf / ] &&
mkdir ../bad  &&
pax  -rwls/$/.bad/ . ../bad

Isso criará um espelho de hardlink de . in ../bad . Todos os arquivos com raiz em . posteriormente também serão encontrados em ../bad , mas por um nome com o apêndice .bad . Se a nova árvore satisfizer, remova a árvore atual e mv a árvore ../bad sobre ela.

    
por 08.01.2016 / 21:10