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 exemple ab?cd
) est unique ( ls ab?cd
affiche un seul fichier), vous pouvez simplement utiliser ce masque dans une mv
commande:
mv ab?cd ab_cd
ls -b
affiche les caractères non imprimables sous forme de séquences d'échappement (par exemple ab\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 -b|grep '\\' ; # includes names with embedded spaces
ls -b|grep '\\[^ ]' ; # excludes names with embedded spaces
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:
ls|env LC_ALL=C grep '[^!-~]' ; # includes names with embedded spaces
ls|env LC_ALL=C grep '[^ -~]' ; # excludes names with embedded spaces
Vous pouvez maintenant diriger cette sortie vers un script pour effectuer le changement de nom souhaité, comme dans:
ls|env LC_ALL=C grep '[^!-~]'|while l=`line`; do ... ; mv "$l" "$n" ; done
Le code omis consiste à formuler le nouveau nom que $n
vous souhaitez. Si vous n'en avez pas line
, vous pouvez utiliser à la while read l
place, bien que cela ne fonctionne pas correctement avec les noms de fichiers avec des espaces de début ou de fin.