1 votos

Encontrar todos los ilegales de caracteres de Windows en una carpeta y subcarpeta

Necesito un script de Automator que busca todos los archivos con los caracteres de Windows como <>:/\\|?* y sustituye a estos personajes con un carácter de subrayado. El resto del nombre del archivo debe permanecer sin cambios.

Como una alternativa, me gustaría utilizar una terminal de comandos. Sé cómo encontrarlos con find . -name "*[<>:/\\|?*]*", pero no sé cómo cambiar los nombres correctamente.

¿Cómo puedo hacer esto?

1voto

Arno Dverjging Puntos 26

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.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X