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

9

Eu tenho um monte de arquivos com o nome do arquivo bagunçado. 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 tem G:some\really\long\file\path\then\the\antes do nome do arquivo que eu gostaria.

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

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

Eu tentei o renamecomando e não foi bem sucedido. Eu ainda sou novo no Linux e realmente não tenho certeza de como fazê-lo ou realmente o que pesquisar no Google. Qualquer ajuda seria apreciada.

kingcobra1986
fonte

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 -napós o teste para realmente renomear os arquivos.

Notas

  • -n não faça nada, apenas imprima o que será alterado
  • s/old/newsubstitua oldpornew
  • .* qualquer número de caracteres
  • \\ A primeira barra invertida é escapar da segunda.
  • Como regex é ganancioso, essa expressão também .*\\consome todas as barras invertidas anteriores.
  • Como os dois últimos delimitadores //estão vazios, tudo o que corresponde à parte de pesquisa é excluído
Zanna
fonte
Eu só preciso da primeira linha ou preciso fazer isso para cada arquivo?
precisa saber é o seguinte
você só precisa da primeira linha @ kingcobra1986, as outras são apenas a saída. *corresponde a todos os arquivos, mas deixe-me alterá-lo, G*pronto. Agora, ele corresponde a todos os arquivos iniciados Gno diretório atual e funcionará neles de uma só vez. Se eles estão em vários diretórios podemos lidar com isso também de várias maneiras
Zanna
Isso funcionou. Você pode explicar o que exatamente acontece nessa linha?
precisa saber é o seguinte
11
@ kingcobra1986 desculpe, eu adicionei notas. Espero que esteja claro, se não, não hesite em pedir mais!
Zanna
Ha, eu gosto da idéia de usar o .*\\ desde do gananciosos.*
Ziazis
10

Você pode fazer isso de forma pura bashusando a expansão de parâmetros do shell .

${file##*\\}(corta até o último prefixo) retira tudo, desde o início do nome do arquivo até a última \vez que foi 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’
αғsнιη
fonte
6

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

sudo apt-get install thunar

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

Como usar o utilitário

  1. Depois de instalar o Thunar, inicie 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 Pesquisar e substituir .
  4. Na caixa Pesquisar 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 e substituir, este utilitário suporta as seguintes ações:

  • Inserir Data / Hora
  • Inserir / Substituir
  • Numeração
  • Remover caracteres
  • Minúsculas letras maiúsculas
pomsky
fonte
não existe um para o nautilus (eu acho que existe!)? Parece um exagero sugerir a instalação de um novo navegador de arquivos para esse fim.
Zanna
@ Zanna Existe um na v3.22, mas acho que ainda não está disponível nos repositórios do Ubuntu.
Pomsky #
2
O Thunar é bastante útil e parece coexistir bem com outros navegadores de arquivos, por isso acho que vale a pena instalá-lo para esse fim. Mas você pode expandir esta resposta com uma explicação de como fazer renomeação em massa em Thunar?
Eliah Kagan
11
Leve de @EliahKagan e isso também
pomsky
Bem feito, agora eu posso upvote (Eu tenho um Xubuntu posso testá-lo em também :))
Zanna