1 votes

Trouver tous les caractères Windows illégaux dans un dossier et un sous-dossier

J'ai besoin d'un script d'Automator qui trouve tous les fichiers avec des caractères Windows illégaux comme <>:/\\|?* et remplace ces caractères par un trait de soulignement. Le reste du nom de fichier doit rester inchangé.

Comme alternative, j'utiliserais un terminal script. Je sais comment les trouver avec find . -name "*[<>:/\\|?*]*" mais je ne sais pas comment changer les noms correctement.

Comment dois-je m'y prendre ?

1voto

Arno Dverjging Points 26

J'ai trouvé une bash Une seule phrase qui recherche chaque fichier et dossier dont le nom contient des caractères non valides et renomme le fichier/dossier en remplaçant chaque caractère non valide par un tiret :

find . -name "*[<>:\\|?*]*" -exec bash -c 'x="{}"; y=$(sed "s/[<>:\\|?*]\+/-/g" <<< "$x") && mv -n "$x" "$y" ' \;

Il est possible qu'un fichier ait un nom illégal qui serait corrigé par le même nom légal qu'un autre fichier au nom illégal (exemple : deux fichiers nommés "fle"). La ligne unique ci-dessus ne changera pas le nom du deuxième (ou autre) fichier au nom illégal qui serait corrigé avec le même nom que le premier. Cela signifie que vous pouvez encore avoir des fichiers illégalement nommés après l'exécution du one-liner. Après avoir exécuté ce one-liner, exécutez

find . -name "*[<>:\\|?*]*"

pour identifier tous les fichiers illégalement nommés qui existent encore. Une façon de gérer cette situation est de remplacer le tiret dans la substitution sed par un autre caractère, par exemple un trait de soulignement, et de réexécuter la ligne unique.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X