Convertendo para .tbz ou usando outras maneiras de encontrar a diferença

Convertendo para .tbz ou usando outras maneiras de encontrar a diferença

Eu tenho duas pastas Pasta A - Tem um total de 1786 arquivos dm4 Pasta B - Tem um total de 2131 tbz (arquivo de arquivo dos dm4s disponíveis nas pastas A e B) arquivos junto com 124 arquivos dm4 que não estão na Pasta A.

O objetivo é ter todos os dm4s em uma pasta e garantir que nenhum dos dm4s que tenham o arquivo tbz na pasta B. esteja faltando. No entanto, quando copio todos os 124 arquivos dm4 ausentes da pasta B para A, ele adiciona 1910 arquivos DM4. Porém, minha pasta B mostra que tenho 2131 tbz. Isso significa que preciso saber os nomes dos 221 arquivos dm4/tbz restantes que estão presentes na pasta b, para saber que eles estão faltando na minha lista de dm4s.

Qual é a maneira mais rápida de descobrir qual arquivo dm4s/tbz estou faltando neste caso.

Responder1

Para ter certeza de que entendi, isso está correto?

Você tem 2131 arquivos .tbz, e cada um deve ter um .dm4 correspondente, ou seja, arquivo de exemplo-09.tbz arquivo de exemplo-09.dm4 Mas estão faltando vários arquivos dm4 correspondentes e precisa descobrir quais são .

Supondo que esteja correto, isso deve funcionar (supondo que você não tenha nenhum espaço em branco nos nomes dos arquivos)

dm4_files="$(find A -name '*.dm4')"
for file in $(find B -name '*.tbz'); do 
  # || is a logical or operator; bash will only execute the right side if the left side fails (returns a non-zero exit code)
  echo -e "$dm4_files" | grep -q "$(basename $file .tbz).dm4" || echo "Missing $(basename $file .tbz).dm4"
done

editar: adicionando instruções para execução devido à má formatação dos comentários

Para executar a partir de um terminal:

  1. Altere A e B acima para os caminhos completos para os diretórios em questão (como alternativa, faça cd para o diretório que contém ambos)
  2. Cole os comandos

Para executar a partir de um script:

  1. Coloque os comandos em um arquivo chamado check-dm4.sh no diretório com A e B (o sufixo .sh não faz nada, mas é convencional para scripts shell)
  2. Insira a seguinte linha no topo do arquivo (primeira linha) #!/bin/bash
  3. Marque o arquivo como executável (chmod +x check-dm4.sh, ou com o botão direito->propriedades/como sua distro o chama) 4. Execute o arquivo

informação relacionada