Elias Caldas
(usa Linux Mint)
Enviado em 03/03/2021 - 16:37h
msoliver escreveu:
[quote]Elias Caldas escreveu:
Boa tarde amigos,
Uso o Linux, gosto do Linux e vou continuar utilizando.
Mas como não sou expert em Linux (utilizo para tarefas administrativas) encontro dificuldades que o amigos experts da comunidade não conseguiram explicar ainda:
Pesquisei em vários artigos sobre como utilizar o comando rename, e todos eles reportam as mesmas explicações das quais nada prático se pode aproveitar.
O Meu problema, e o de muitos outros, é o seguinte:
A cada mês preciso renomear centenas de documentos em pdf, cujos nomes e descrições devem ser retirados de um sistema.
Os nomes eu consigo tabelar em um arquivo de texto qualquer e deixar preparado para renomear os arquivos.
O problema é renomeá-los em lote, de forma a otimizar o tempo. Tentei utilizar o comando rename, mas não consegui produzir resultados.
As dificuldades são as seguintes:
Como indico os arquivos, ou o diretório em que estão, que devem ser renomeados?
Como renomeio todos eles de uma vez somente, colando os nomes que deixei preparados?
Agradeço de antemão a disposição em auxiliar
Boa tarde Elias.
O comando rename, é bem semelhante ao comando sed, usa string/REGEX, como padrão,
para identificar qual parte do nome do arquivo será alterada, e qual será a alteração,
Exemplo:
RENOMEIA De: IMGXXXX1 Para: FOTO(1).jpg
#Casa os arquivos que iniciam com IMG,
#Seguidos de um ou mais X,
#Seguidos de um ou mais números #Retrovisor 2
rename -n 's/^IMG([X]+)([[:alnum:]]+)/FOTO\($2\).jpg/' * #O * indica todo do dir corrente
rename(IMGXXXX0, FOTO(0).jpg)
rename(IMGXXXX1, FOTO(1).jpg)
----------------------------------------------
Outro Exemplo:
rename -n 's/^([0-9]{8})([0-9]+.*)$/$1.txt/' *.txt #Pega todos *.txt do dir corrente
Obs.: o parâmetro "-n", não altera, somente mostra o resultado,
para Fazer a alteração, retire o "-n"
----------------------------------------------
No seu caso, para pegar os nomes que estão
em um arquivo de texto,
pode usar um laço, ou o awk com a função "system()", que é muito mais rápido.....
----------------------------------------------------------------------------------------------------------------------------
Quanto ao seu comentário:
encontro dificuldades que o amigos experts da comunidade não conseguiram explicar ainda:
Nem sempre o aprendizado é fácil,
tudo que aprendi referente ao Linux, é decorrente de muita leitura, man, help, info, buscadores, etc...
----------------------------------------------------------------------------------------------------------------------------
Seja claro e objetivo com o seu problema:
Tipo:
Tenho arquivos com o padrão "xyz123 doc.pdf", exemplos dos nomes atuais....
quero alterar para: Doc_NNN.pdf, onde NNN, deve seguir uma sequência numérica.....
Estão em sub dirs do dir Documentos.....
Quanto mais detalhes, melhor para que ajuda....
Nos meus mais de 5 anos no VOL,
concluo que, é mais dificíl entender o que "querem", do que a solução em si.
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Boa tarde Marcelo Oliver, grato pela sua disposição em auxiliar.
Vou tentar expor a minha situação de uma forma mais objetiva:
Tenho uma pasta cujo nome é RP'S - FEV.2020, contendo arquivos em pdf. São documentos retirados de um sistema de administração. O nome de cada um, neste momento, é um número sequenciado gerado pelo software do site Ilovepdf. Ocorre que preciso renomear estes arquivos com o nro/sigla correspondente no sistema que utilizo. Estes documentos serão anexados à processos virtuais para fins de arquivamento e auditoria, se for necessário. Mas o nro/sigla de sistema destes arquivos não estão necessariamente em ordem sequenciada, o que facilitaria bastante, mas também não é aleatório (não ajuda muito). Então tabelei os nros/siglas destes arquivos e produzi uma lista pensando em simplesmente renomear cada arquivo manualmente, o que levará um bom tempo.
Os nros/siglas obedecem o padrão abaixo:
2020RP700001
2020RP700003
2020RP700004
2020RP700010
2020RP700002
Como você pode ver, não obedecem uma sequência, mas também não são aleatórios. Você pode perguntar sobre os demais documentos que não estão na lista, o que faria uma sequência. Bom, nem todos os documentos desta família de docs são necessários. apenas alguns. Renomeio os documentos, produzindo a lista, conforme abaixo demonstrado:
2020RP700001 - Empresa A
2020RP700003 - Empresa B S/A
2020RP700004 - Empresa XYZ
2020RP700010 - Empresa T e G lTDA
2020RP700002 - Empresa I
Este é o formato da lista que mencionei.
Se puder me auxiliar, agradeço demais.
Precisaria apenas de um exemplo de como listar os arquivos da pasta RP'S - FEV.2020 no terminal e colar os nomes correspondentes. (Observo o que esta operação de renomear arquivos se repete mensalmente, com grande quantidade de documentos, e constitui a realidade de muitas pessoas que precisam trabalhar em casa neste momento tão difícil).
Obrigado!