J'ai une liste de fichiers dans un répertoire, mais certains d'entre eux ont des caractères étranges dans le nom. Comment puis-je renommer uniquement ces fichiers pour supprimer ces caractères?
Le système d'exploitation de l'ordinateur est Red Hat, jeu de caractères UTF-8.
Réponses:
Essayez de désintoxication. De la page de manuel:
Il est disponible dans les référentiels RHEL 6, la dernière fois que j'ai vérifié. Je ne suis pas sûr de RHEL 7. Avant de procéder au nettoyage, il est conseillé d'utiliser
detox
le-n
commutateur (fonctionnement à sec). Par exemple:detox -rn /somedir
.la source
Si vous ne pouvez pas utiliser
detox
ou si vous souhaitez davantage de contrôle sur les nouveaux noms de fichier, vous pouvez utiliser des outils standard.ls
avec sortie vers le terminal affiche les caractères non imprimables sous la forme?
. Si le nom affiché (par exempleab?cd
) est unique (ls ab?cd
affiche un seul fichier), vous pouvez simplement utiliser ce masque dans unemv
commande:ls -b
affiche les caractères non imprimables sous forme de séquences d'échappement (par exempleab\001cd
), bien que vous ne puissiez pas utiliser le nom affiché dans une autre commande, mais cela vous permet de voir tous les fichiers affectés:ls
avec output dans un fichier ou un tuyau écrit le nom de fichier littéral: dans ce cas, vous pouvez obtenir une liste de noms de fichiers avec des éléments non imprimables avec:Vous pouvez maintenant diriger cette sortie vers un script pour effectuer le changement de nom souhaité, comme dans:
Le code omis consiste à formuler le nouveau nom que
$n
vous souhaitez. Si vous n'en avez pasline
, vous pouvez utiliser à lawhile read l
place, bien que cela ne fonctionne pas correctement avec les noms de fichiers avec des espaces de début ou de fin.la source