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.png
y background.gif
no 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 img
carpeta 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--help
opción de documentación, por ejemplo:Ejemplo de uso:
fuente
ls -l
para 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
uniq
no proporcionan una función para seleccionar un delimitador de campo diferente.sed
obsoleto? ¿Arcano? Seguro. ¿Obsoleto? No que yo supiese. (Y solo busqué para verificar).Guarda esto en un archivo llamado
duplicates.py
Luego 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.ORF
yP001 (1).ORF
como duplicados y también parece pensar que el 60% de mis archivos son duplicados, lo cual está mal, estoy bastante seguro.fslint
encontró 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 DIRNAME
duplicates.py
fuente