Mude várias extensões de arquivo (incluindo não)

0

Se eu tiver um diretório de arquivos, onde alguns arquivos têm uma extensão como .html e alguns arquivos não têm extensão, como alterá-los todos para, por exemplo, .txt?

    
por Adam_G 04.03.2015 / 22:05

3 respostas

1

Acredite que isso deve funcionar para você (provavelmente maneiras mais elegantes de fazer isso com sed).

for file in *; do
  base='echo "${file%.*}"'
  mv -- "${file}" "${base}.txt"
done
    
por 04.03.2015 / 22:46
0

Não necessariamente mais elegante, mas para fins de conclusão, aqui está uma solução sed :

for file in *; do
  mv "$file" "$(echo "$file" | sed 's/^\(.*\)\.\?.*$/.txt/')"
done

O sed bit pega tudo antes do último ponto no nome do arquivo, e substitui o ponto e o que vem depois com '.txt'. Se não houver ponto no nome do arquivo, '.txt' será anexado à coisa toda.

As aspas ao redor das variáveis são importantes para manipular nomes de arquivos com espaços e tal, independentemente de qual método você usar.

    
por 04.03.2015 / 23:54
0

Para renomear todos eles no shell, seria algo assim:

for file in *; do
  mv -- "${file}" "'basename -- "${file}"'.txt"
done

Você pode querer testar o tipo com file ou outras verificações para determinar as extensões.

    
por 04.03.2015 / 22:14