0 votes

Comment supprimer un caractère spécial d'un nom de dossier ?

Je crée un dossier comme

mkdir -p ../service/target/static

mais Windows le crée avec un caractère spécial static . J'ai besoin de supprimer explicitement ce caractère spécial en utilisant le shell script. J'ai essayé avec les commandes rn et mv mais cela ne semble pas fonctionner et la commande rename donnant l'erreur command not found.

0 votes

Vous avez dit "mais Windows le crée...", et bien si vous utilisez Windows... alors ce n'est pas l'endroit approprié pour votre question. Cela dit, vous devriez toujours utiliser des guillemets, simples ou doubles selon le cas, pour éviter tout problème. par ex : mkdir -p '../service/target/static'

0 votes

Cela ne semble pas fonctionner avec les guillemets.

1 votes

Est-ce que le mkdir dans un shell script ? Si c'est le cas, le script peut avoir des fins de ligne de type DOS/Windows, qui incluent un caractère de retour chariot que l'interpréteur de commandes Unix considérera comme faisant partie de la ligne de commande (et dans ce cas, comme faisant partie du nom de fichier). Voir cette question de stackoverflow .

1voto

Vladimir Botka Points 161

FWIW. Voici un simple script pour renommer un fichier(ou un répertoire).

> cat rename-file
#!/bin/bash
source=$1
target=`echo "$source" | sed -e 's/[^A-Za-z0-9._-]/_/g'`
if [ "$source" != "$target" ]; then
    mv "$source" "$target"
fi

Par exemple (allez dans le répertoire, écrivez la commande et mettez le nom du fichier en tabulation)

> ls -1
'a\b(c#d@e'
> rename-file a\\b\(c#d@e
> ls -1
a_b_c_d_e

Vous pouvez adapter la traduction à vos besoins.

s/[^A-Za-z0-9._-]/_/g

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