¿Herramienta para identificar todas las rutas de archivo/nombres de archivo que excedan la longitud permitida de Windows?

Tengo una carpeta que contiene varias subcarpetas anidadas.

La carpeta principal tiene 1,2 GB y contiene casi 3000 archivos de imágenes, principalmente capturas de pantalla .

Mi Mac no tiene ningún problema con las rutas de archivo/nombres largos, pero ahora necesito compartir estos archivos con una gran autoridad del Reino Unido que ejecuta Windows (no estoy seguro de qué versión, ya que mi Q ha caído en saco roto hasta ahora... .)

Creo que el único método por el que se me permitirá compartir los archivos es OneDrive/Sharepoint: la Autoridad no puede usar ningún otro método para compartir en la nube.

Debido al anidamiento (que tiene que permanecer), muchos de los nombres de archivo/rutas son demasiado largos, y One Drive rechaza repetidamente más de 1200 de ellos sin sincronizar.

El cuadro de error emergente solo muestra una ruta de archivo infractora; de manera útil, no ofrece una lista de archivos 'no conformes'.

¿Existe una forma rápida de identificar y agrupar los nombres de archivo/ruta de archivo ofensivos para poder cambiarles el nombre?

No quiero renombrarlos por lotes en caso de que eso altere el significado que he elegido para los nombres de archivo individuales, que son importantes.

Más del 95% de los archivos son archivos de solo imágenes y evidencia en una investigación de fraude de empleados. Cada nombre de archivo es importante ya que le da contexto a la imagen , por lo tanto, no quiero usar una herramienta por lotes para cambiar los nombres a algo más corto pero inútil.

No me importa revisarlos uno por uno, pero necesito saber cuáles son los nombres de archivo / rutas de archivo 'ofensivos' si voy a hacerlo.

Es posible que también pueda anidar las carpetas de forma ligeramente diferente si sé cuáles están causando los problemas, ya que eso puede reducir la longitud de la ruta del archivo.

Idealmente, estoy buscando un software astuto similar a MassReplaceIt (que ya he usado para encontrar y reemplazar 'caracteres ilegales' en los nombres de archivo), pero puedo usar el comando de terminal si no existe ningún software.

¡Gracias!

Alternativamente, cambie el nombre de las carpetas y proporcione una clave, de esa manera no espera que cualquier acortamiento de nombre deba ser completamente manual o inteligente.
¿Escribir una clave para casi 3000 archivos y volver a numerarlos? 🥴 Gulp... Eso es el resto del mes, entonces.
Las carpetas, no los archivos. si tiene nombres de archivos que se acercan a los 260 caracteres, entonces tendrá problemas: P Podría usar A:A1:AA1:Really really long file namelo contrario y solo tiene que proporcionar una clave para la jerarquía de carpetas.
Gracias, creo que probablemente se deba en parte al grado de anidamiento: ninguno de los nombres de las carpetas es demasiado largo. Pero algunos de los nombres de archivo probablemente lo sean. Solo desearía que OneDrive le diera una lista de los archivos ofensivos en lugar de simplemente rechazar el salto y hacer que juegue al detective. Es posible que tenga que usar su idea clave (para lo cual, gracias), pero es mucho más fácil ver el nombre de una carpeta en un nido y pensar "eso necesita investigarse" e inmediatamente hacer clic en él, en lugar de tener consultar una clave separada de carpetas. La persona que mira la evidencia no es ni joven ni aficionada a la tecnología. 🙃
Apoyo totalmente su postura, pero como está atascado con el sistema de archivos de Windows 'principios de los 90', algo tiene que ceder;))

Respuestas (1)

Asumiendo nombres de archivos/carpetas algo sensatos

find TOPDIR | while read line; do [[ ${#line} -gt 1200 ]] && echo $line; done

imprimirá todas las rutas/archivos donde la longitud combinada supere los 1200 caracteres. Esto debería permitir detectar nombres de carpetas problemáticos y cambiarles el nombre en consecuencia.

Gracias. ¿El límite es realmente 1200? Creí haber leído en alguna parte que era mucho más bajo que eso: ¿260 o algo parecido? Entonces, estoy ingresando este comando en la Terminal: ¿qué debo ingresar para que mire solo el archivo principal y los contenidos anidados, o ese comando mostrará todos los archivos ofensivos en mi Mac? Es solo este proyecto en particular; No me importan todos mis otros archivos/carpetas.
Ah, me acabo de dar cuenta, o creo que lo he hecho, 'TOPDIR' en su consejo anterior es el nombre de la carpeta principal. ¿Está bien?
@221b Sí, TOPDIR debe reemplazarse por el nombre de la carpeta principal. O ejecuta cd /to/parent/foldery usa .como TOPDIR. En cuanto al 1200: no tengo idea, solo elegí el número que mencionaste en la pregunta.
1200 es el número de archivos que se rechazan atm, ¡no el número de caracteres de la ruta del archivo!
@ 221b Ah, vuelve a leer la pregunta :-)
¡Lo siento, presioné regresar demasiado pronto! 1200 es el número de archivos que se rechazan atm, ¡no el número de caracteres de la ruta del archivo! Y gracias, probé reemplazando TOPDIR con el nombre de la carpeta principal y obtuve esto: ~ % find NHSFPTEST | mientras lee la línea; hacer [[ ${#linea} -gt 260 ]] && echo $linea; hecho encontrar: NHSFPTEST: No existe tal archivo o directorio myname@mynames-Air ~ %
¡Éxito! De todos modos. Ya supuse que tenía que sacarlo de OneDrive para ejecutar el comando de terminal. Pensé que lo había sacado localmente, pero todavía estaba en iCloud. Lo arrastré de nuevo, a través de Mi Macbook Air> Macintosh HD> Usuario> Yo, ejecuté el comando nuevamente y arrojó una gran cantidad de datos... 🥴. A punto de pegarlo en un formato más legible y ver si puedo editar los nombres de archivo/rutas manualmente, o cuál será el mejor movimiento, pero ahora al menos puedo ver qué nombres de archivo/rutas de archivo están causando los problemas. ¡Muchas gracias !