
Estoy reorganizando algunos archivos en mi disco duro y tengo una copia antigua de una carpeta, lo que quiero hacer es asegurarme de que cada archivo de la carpeta A (la copia anterior) exista en la carpeta B. Cada carpeta contiene al menos 200 archivos. la mayoría de los cuales probablemente sean duplicados.
Advertencia: no puedo simplemente verificar los nombres de los archivos, también debo asegurarme de que tengan el mismo contenido (à la fdupes
).
Revisé la página de manual para ver fdupes
si había alguna forma de realizar la operación inversa (es decir, averiguar qué archivosnotengo copias) pero vino con las manos vacías, incluso si la funcionalidad existiera, todavía tengo archivos que existen solo en la carpeta B.
Estas dos preguntas eran similares, pero eran solo Windows, por lo que no fueron de mucha ayuda:
- ¿Cómo puedo encontrar todas las carpetas de la carpeta A que no existen en la carpeta B?
- Elimine archivos de una carpeta si no existe un archivo con un nombre similar en otra carpeta
Gracias de antemano.
Respuesta1
Si ya tiene una lista de archivos duplicados, simplemente compárela con la lista de todos los archivos para encontrar los únicos:
fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f)
-w
solo procesa palabras completas (no subcadenas, por lo que el archivoabcd
no coincide conabc
)-F
considera que los patrones son expresiones literales, no regulares-f
utiliza el archivo especificado (-
en este caso, es decir, la entrada estándar) como una lista de expresiones con las que comparar.-v
como probablemente sepas, muestra las líneas que no coinciden.
Esto debería generar una lista que contenga los archivos que solo se encuentran en una de las carpetas, debería ser fácil verificar que todos están en la carpeta B hojeando o buscando el nombre de la carpeta A (llamada a continuación dir1
) de esta manera:
fdupes -r dir1 dir2 | grep -vwFf- <(find dir1 dir2 -type f) | grep -F dir1