He encontrado un bash la línea que se encuentra cada archivo y carpeta con caracteres no válidos en el nombre y cambia el nombre del archivo/carpeta, cambiar cada carácter no válido para un guión:
find . -name "*[<>:\\|?*]*" -exec bash -c 'x="{}"; y=$(sed "s/[<>:\\|?*]\+/-/g" <<< "$x") && mv -n "$x" "$y" ' \;
Es posible que un archivo tiene un ilegales nombre que sería corregido para el exacto mismo nombre legal como otro ilegalmente nombre del archivo (Ejemplo: dos archivos con el nombre "fle"). La línea de arriba no va a cambiar el nombre de la segunda (o más) de manera ilegal nombre de archivo que podría corregirse con el mismo nombre que el primero. Esto significa que usted todavía puede tener algunos ilegalmente nombre de los archivos después de la línea se ejecuta. Después de ejecutar este one-liner, ejecutar
find . -name "*[<>:\\|?*]*"
de nuevo a identificar cualquier ilegalmente archivos con nombres que todavía existen. Una manera de lidiar con esta situación es cambiar el guión en la sed de sustitución a otro personaje, por ejemplo, subrayado, y ejecutar la línea de nuevo.