Tengo una carpeta llamada img, esta carpeta tiene muchos niveles de subcarpetas, todas las cuales contienen imágenes. Los voy a importar a un servidor de imágenes.
Normalmente, las imágenes (o cualquier archivo) pueden tener el mismo nombre siempre que estén en una ruta de directorio diferente o tengan una extensión diferente. Sin embargo, el servidor de imágenes en el que los estoy importando requiere que todos los nombres de imágenes sean únicos (incluso si las extensiones son diferentes).
Por ejemplo, las imágenes background.pngy background.gifno se le permitiría, porque a pesar de que tienen diferentes extensiones que todavía tienen el mismo nombre de archivo. Incluso si están en subcarpetas separadas, aún deben ser únicas.
Entonces, me pregunto si puedo hacer una búsqueda recursiva en la imgcarpeta para encontrar una lista de archivos que tengan el mismo nombre (sin incluir la extensión).
¿Hay un comando que pueda hacer esto?
fuente

Respuestas:
FSlint
es un buscador de duplicados versátil que incluye una función para encontrar nombres duplicados:
El paquete FSlint para Ubuntu enfatiza la interfaz gráfica, pero como se explica en las preguntas frecuentes de FSlint, hay una interfaz de línea de comandos disponible a través de los programas en
/usr/share/fslint/fslint/. Use la--helpopción de documentación, por ejemplo:Ejemplo de uso:
fuente
ls -lpara formatear su salida. Esta pregunta debería explicar qué significan los colores.Como dice el comentario, también encontrará carpetas. Aquí está el comando para restringirlo a archivos:
fuente
uniqno proporcionan una función para seleccionar un delimitador de campo diferente.sedobsoleto? ¿Arcano? Seguro. ¿Obsoleto? No que yo supiese. (Y solo busqué para verificar).Guarda esto en un archivo llamado
duplicates.pyLuego haga que el archivo sea ejecutable:
Ejecutar, por ejemplo, así:
Debería generar pares de archivos que tengan el mismo nombre base (1). Escrito en python, deberías poder modificarlo.
fuente
P001.ORFyP001 (1).ORFcomo duplicados y también parece pensar que el 60% de mis archivos son duplicados, lo cual está mal, estoy bastante seguro.fslintencontró un número real de nombres de archivo duplicados que está cerca del 3%.Supongo que solo necesita ver estos "duplicados", luego manejarlos manualmente. Si es así, este código bash4 debería hacer lo que quieras, creo.
Consulte http://mywiki.wooledge.org/BashGuide/Arrays#Associative_Arrays y / o el manual de bash para obtener ayuda sobre la sintaxis de matriz asociativa.
fuente
Este es bname:
Hazlo ejecutable:
Invocarlo:
Pro:
Estafa:
fuente
Mejora al script de loevborg, para mis necesidades (incluye salida agrupada, lista negra, salida más limpia durante el escaneo). Estaba escaneando una unidad de 10TB, así que necesitaba una salida un poco más limpia.
Uso:
python duplicates.py DIRNAMEduplicates.pyfuente