Escolher linhas / alterar e remover a escolhida

1. Escolher linhas / alterar e remover a escolhida

Ede
ede_linux

(usa Ubuntu)

Enviado em 26/12/2017 - 21:42h

Olá a todos,

Tenho um arquivo txt com o seguinte formato, no ficheiro regist.txt:

1ed311a91b41sdfsdffda03290e2de0d610da7fea7da56153e1194e6076dfc7 /path/fg.pdf
1ed311a91b41sdfsdffda03290e2de0d610da7fea7da56153e1194e6076dfc7 /path/fg2.pdf
1ed311a91b41sdfsdffda03290e2de0d610da7fea7da56153e1194e6076dfc7 /path/fg3.pdf
8a92f086f62b89e4513sddsfdfdsfdsfsdfds36844f850ff26c510a6e54211f3debd3 /path/fgfg.pdf
8a92f086f62b89e4513sddsfdfdsfdsfsdfds36844f850ff26c510a6e54211f3debd3 /path/fgfg2.pdf


Depois de meses de volta deste script (https://www.vivaolinux.com.br/topico/Servidores-Linux-para-iniciantes/Detectar-e-localizar-os-arquivos-duplicados) ainda não consegui arranjar uma saída. Vou tentar explicar através de "imagens".
Pretendo que o user escolha uma linha de todas as repetidas que existem. Por exemplo

Escolha com qual registo pretende ficar e carregue enter:
[0]-1ed311a91b41sdfsdffda03290e2de0d610da7fea7da56153e1194e6076dfc7 /path/fg.pdf
[1]-1ed311a91b41sdfsdffda03290e2de0d610da7fea7da56153e1194e6076dfc7 /path/fg2.pdf
[2]-1ed311a91b41sdfsdffda03290e2de0d610da7fea7da56153e1194e6076dfc7 /path/fg3.pdf
Prentendo ficar com:

O user escolhe a linha [1]. Após digitar enter acontece 2 coisas no ficheiro regist.txt.
A primeira é que a linha [1] é apagada. A segunda é que o valor da hash na linha [0] e [2] é substituido por rm.

O algoritmo avança para o seguinte conjunto de linhas que tem o valor hash repetido.

Escolha com qual registo pretende ficar e carregue enter:
[0]-8a92f086f62b89e4513sddsfdfdsfdsfsdfds36844f850ff26c510a6e54211f3debd3 /path/fgfg.pdf
[1]-8a92f086f62b89e4513sddsfdfdsfdsfsdfds36844f850ff26c510a6e54211f3debd3 /path/fgfg2.pdf
Prentendo ficar com:

O user escolheu a linha [0]

No final, terei que terminar com o conteúdo do ficheiro regist.txt igual a este:

rm /path/fg.pdf
rm /path/fg3.pdf
rm /path/fgfg2.pdf


O objectivo é executar cada uma das linhas do ficheiro regist.txt como um comando.

Estou encravado pois não estou a ver como fazer isto. Mais a falta de conhecimento em shellscript resulta em horas e dias a navegar a testar uma série de hipoteses....

O que cria o ficheiro regist.txt é este comando:

find $1 -type f -exec sha256sum '{}' ';' | sort | uniq --all-repeated=none -w 65 >> regist.txt


Estarei eu a complicar?
Através do comando anterior consigo identificar todos os ficheiros repetidos. Acontece que é gerada uma lista imensa de registos. Pretendo criar uma solução mais simples onde consiga decidir quais dos arquivos é que ficam. Pois comecei a processar o txt e ao fim de uns 150 linhas já tinha passado uns 30 minutos.


  


2. Re: Escolher linhas / alterar e remover a escolhida

Ede
ede_linux

(usa Ubuntu)

Enviado em 26/12/2017 - 21:59h

Se fizer:

uniq -d -w 65 regist.txt

Apenas imprime uma ocorrencia por cada linha duplicada (apenas olha para os primeiros 65 caracteres). Mas não é isso que pretendo.

[UPDATE1]
Já corrigi

uniq -D -w 65 regist.txt



3. Re: Escolher linhas / alterar e remover a escolhida

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 26/12/2017 - 22:02h

O programa "fdupes" não resolve seu caso?


4. Re: Escolher linhas / alterar e remover a escolhida

Ede
ede_linux

(usa Ubuntu)

Enviado em 26/12/2017 - 23:10h

Obrigado pela resposta.
O que me preocupa é isto:

Searches the given path for duplicate files. Such files are found by comparing file sizes and MD5 signatures,
followed by a byte-by-byte comparison.

O sha256sum não é melhor do que md5sum?

Obrigado

[UPDATE1]
Mas esta congi está excelente:

fdupes -rnAS -d teste_repeat2/



5. Re: Escolher linhas / alterar e remover a escolhida

Ede
ede_linux

(usa Ubuntu)

Enviado em 27/12/2017 - 22:27h

Existe maneira de executar o fdupes apenas sobre determinados ficheiros (apenas sobre pdf)? Já andei a experimentar opções com o find e grep como como o pipeline mas não tive sucesso!

Obrigado






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts