Como renomear um grupo de arquivos com o que parece um caminho de arquivo do Windows em seus nomes

7

Eu tenho um monte de arquivos com o nome do arquivo confuso. Todos os nomes de arquivos têm o mesmo começo, que parecem ser diretórios de arquivos do Windows. O problema é que existem mais de 700 arquivos e eu realmente não quero passar e renomear manualmente todos eles. Estes são exemplos dos nomes dos arquivos (Nota: Nenhum deles possui diretórios de arquivos):

G:some\really\long\file\path\then\the\name1.jpg
G:some\really\long\file\path\then\the\name2.png
G:some\really\long\file\path\then\the\filename.txt
G:some\really\long\file\path\then\the\file_name.mov
...

O importante é que cada arquivo tenha G:some\really\long\file\path\then\the\ antes do nome do arquivo que eu gostaria.

Então, eu gostaria que os arquivos acima se parecessem com:

name1.jpg
name2.png
filename.txt
file_name.mov

Eu tentei o comando rename e não obtive êxito. Eu ainda sou novo com o Linux e realmente não tenho certeza sobre como ir sobre isso ou realmente o que o google. Qualquer ajuda seria apreciada.

    
por kingcobra1986 24.08.2017 / 07:04

3 respostas

18

Acabei de remover tudo até a última barra invertida com rename

$ rename -n 's/.*\//' G*
rename(G:some\really\long\file\path\then\the\file_name.mov, file_name.mov)
rename(G:some\really\long\file\path\then\the\filename.txt, filename.txt)
rename(G:some\really\long\file\path\then\the\name1.jpg, name1.jpg)
rename(G:some\really\long\file\path\then\the\name2.png, name2.png)

Remova -n após o teste para realmente renomear os arquivos.

Notas

  • -n não faça nada, apenas imprima o que será alterado
  • s/old/new replace old com new
  • .* qualquer número de caracteres
  • \ A primeira barra invertida é a de escapar da segunda.
  • Como regex são gananciosos, essa expressão .*\ também inclui todas as barras invertidas precedentes.
  • Como os dois últimos delimitadores // estão vazios, tudo que foi correspondido na parte de pesquisa é excluído
por Zanna 24.08.2017 / 07:21
8

Você pode fazer isso em bash puro usando expansão de parâmetros do shell .

${file##*\} (cut-up-last-prefix) retira tudo desde o início do nome do arquivo até o último \ visto.

for file in *; do
    mv -v "$file" "${file##*\}";
done

Os resultados da renomeação são:

‘G:some\really\long\file\path\then\the\file_name.mov’ -> ‘file_name.mov’
‘G:some\really\long\file\path\then\the\filename.txt’ -> ‘filename.txt’
‘G:some\really\long\file\path\then\the\name1.jpg’ -> ‘name1.jpg’
‘G:some\really\long\file\path\then\the\name2.png’ -> ‘name2.png’
    
por αғsнιη 24.08.2017 / 08:42
6

Se você está procurando soluções GUI , há muitos aplicativos de renomeação em massa. Sugiro o Thunar , que é o gerenciador de arquivos padrão do Xfce. Ele vem com uma ferramenta de renomeação em massa. Você pode instalar o Thunar executando o seguinte comando no Terminal:

sudo apt-get install thunar

Você provavelmente poderá instalar a partir do Ubuntu Software também.

Como usar o utilitário

  1. Depois de instalar o Thunar, ative o utilitário Renomear em massa .
  2. Clique no ícone + e adicione os arquivos que deseja renomear.
  3. Clique na caixa suspensa logo abaixo da lista de arquivos selecionados e selecione Pesquisa & amp; Substituir .
  4. Na caixa Procurar por: digite G:some\really\long\file\path\then\the\ (a parte da qual você deseja se livrar), deixe a caixa Substituir por: vazia. Você deve ver a visualização das alterações na coluna Novo nome .
  5. Para aplicar as alterações, clique no botão Renomear arquivos .

Além de Pesquisar & amp; Substituir este utilitário suporta as seguintes ações:

  • Inserir data / hora
  • Inserir / Substituir
  • Numeração
  • Remover caracteres
  • Maiúsculas / Minúsculas
por pomsky 24.08.2017 / 07:24