Convertir a .tbz o usar otras formas de encontrar la diferencia

Convertir a .tbz o usar otras formas de encontrar la diferencia

Tengo dos carpetas Carpeta A: tiene un total de 1786 archivos dm4 Carpeta B: tiene un total de 2131 tbz (archivo de almacenamiento de los dm4 disponibles en las carpetas A y B) junto con 124 archivos dm4 que no están en la carpeta A.

El objetivo es tener todos los dm4 en una carpeta y asegurarse de que no falte ninguno de los dm4 que tengan el archivo tbz en la carpeta B. Sin embargo, cuando copio los 124 archivos dm4 que faltan de la carpeta B a la A, se agregan 1910 archivos DM4. Sin embargo, mi carpeta B muestra que tengo 2131 tbz. Eso significa que necesito saber los nombres de los 221 archivos dm4/tbz restantes que están presentes en la carpeta b, para saber que faltan en mi lista de dm4.

¿Cuál es la forma más rápida de encontrar qué archivo dm4s/tbz me falta en este caso?

Respuesta1

Para asegurarme de que lo entiendo, ¿es correcto?

Tiene 2131 archivos .tbz, y cada uno debe tener un .dm4 correspondiente, es decir, archivo-ejemplo-09.tbz archivo-ejemplo-09.dm4. Pero le faltan varios archivos dm4 correspondientes y necesita encontrar cuáles son. .

Suponiendo que sea correcto, esto debería funcionar (suponiendo que no tenga ningún espacio en blanco en sus nombres de archivo)

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: agregar instrucciones para ejecutar debido a un formato de comentario deficiente

Para ejecutar desde una terminal:

  1. Cambie A y B arriba por las rutas completas de los directorios en cuestión (alternativamente, cd al directorio que contiene ambos)
  2. Pegar los comandos

Para ejecutar desde un script:

  1. Coloque los comandos en un archivo llamado algo así como check-dm4.sh en el directorio con A y B (el sufijo .sh no hace nada, pero es convencional para scripts de shell)
  2. Inserte la siguiente línea en la parte superior del archivo (primera línea) #!/bin/bash
  3. Marque el archivo como ejecutable (chmod +x check-dm4.sh, o con clic derecho->propiedades/como lo llame su distribución) 4. Ejecute el archivo

información relacionada