Substitution de caractères ... !
Fermé
touchepasaugrisbi
Messages postés
75
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
15 juin 2008
-
25 avril 2008 à 11:52
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 25 avril 2008 à 20:09
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 25 avril 2008 à 20:09
A voir également:
- Substitution de caractères ... !
- Caractères ascii - Guide
- Caractères spéciaux clavier azerty - Guide
- Caractères spéciaux - Guide
- Exemple de mot de passe à 8 caractères - Guide
- Caractères spéciaux mac - Guide
2 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
25 avril 2008 à 13:14
25 avril 2008 à 13:14
Salut,
Tiens voilà une solution vite fait et à adapter :
PS. Si il y a plus d'un espace dans les noms de fichiers ou de répertoires, changer la syntaxe de :
final=${name/ /_}
par :
final=${name// /_}
Tiens voilà une solution vite fait et à adapter :
# arborescence [tmpfs]$ tree . |-- mon rep1 | |-- mon fichier1.txt | |-- mon fichier2.txt | |-- mon fichier3.txt | |-- mon fichier4.txt | `-- mon fichier5.txt |-- mon rep2 | |-- mon fichier1.txt | |-- mon fichier2.txt | |-- mon fichier3.txt | |-- mon fichier4.txt | `-- mon fichier5.txt `-- mon rep3 |-- mon fichier1.txt |-- mon fichier2.txt |-- mon fichier3.txt |-- mon fichier4.txt `-- mon fichier5.txt 3 directories, 15 files # on s'occupe d'abord de substituer les espaces contenus dans les répertoires [tmpfs]$ find . -type d -name "*" -exec bash -c 'name=${1};final=${1/ /_}; mv "${name}" "${final}"' - {} \; 2>/dev/null [tmpfs]$ tree . |-- mon_rep1 | |-- mon fichier1.txt | |-- mon fichier2.txt | |-- mon fichier3.txt | |-- mon fichier4.txt | `-- mon fichier5.txt |-- mon_rep2 | |-- mon fichier1.txt | |-- mon fichier2.txt | |-- mon fichier3.txt | |-- mon fichier4.txt | `-- mon fichier5.txt `-- mon_rep3 |-- mon fichier1.txt |-- mon fichier2.txt |-- mon fichier3.txt |-- mon fichier4.txt `-- mon fichier5.txt 3 directories, 15 files # Maintenant on s'occupe des fichiers [tmpfs]$ find . -type f -exec bash -c 'name=$(basename "$1"); rep=$(dirname "$1"); final=${name/ /_}; mv "${1}" "${rep}/${final}"' - {} \; 2>/dev/null [tmpfs]$ tree . |-- mon_rep1 | |-- mon_fichier1.txt | |-- mon_fichier2.txt | |-- mon_fichier3.txt | |-- mon_fichier4.txt | `-- mon_fichier5.txt |-- mon_rep2 | |-- mon_fichier1.txt | |-- mon_fichier2.txt | |-- mon_fichier3.txt | |-- mon_fichier4.txt | `-- mon_fichier5.txt `-- mon_rep3 |-- mon_fichier1.txt |-- mon_fichier2.txt |-- mon_fichier3.txt |-- mon_fichier4.txt `-- mon_fichier5.txt 3 directories, 15 files [tmpfs]$;-))
PS. Si il y a plus d'un espace dans les noms de fichiers ou de répertoires, changer la syntaxe de :
final=${name/ /_}
par :
final=${name// /_}
touchepasaugrisbi
Messages postés
75
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
15 juin 2008
4
25 avril 2008 à 15:53
25 avril 2008 à 15:53
Merci pour tes suggestions jipici !
Ci-après le script final ;
Ci-après le script final ;
#!/bin/bash ### # # Remplace le caractères espace ' ' par le caractère underscore '_' # Permet un parcours descendant de l'arborescence # ### # # Remplace les espaces dans les noms de répertoire # # Un espace oneSpaceInDirectory() { find . -type d -name "*" -exec bash -c 'name=${1};final=${1/ /_}; mv "${name}" "${final}"' - {} \; 2>/dev/null } # Plusieurs espaces moreOneSpaceInDirectory() { find . -type d -name "*" -exec bash -c 'name=${1};final=${1// /_}; mv "${name}" "${final}"' - {} \; 2>/dev/null } # # Remplace les espaces dans les noms de fichier # # Un espace oneSpaceInFile() { find . -type f -exec bash -c 'name=$(basename "$1"); rep=$(dirname "$1"); final=${name/ /_}; mv "${1}" "${rep}/${final}"' - {} \; 2>/dev/null } # Plusieurs espaces moreOneSpaceInFile() { find . -type f -exec bash -c 'name=$(basename "$1"); rep=$(dirname "$1"); final=${name// /_}; mv "${1}" "${rep}/${final}"' - {} \; 2>/dev/null } remplaceSpaceInDirectory() { moreOneSpaceInDirectory for z in $(ls) do if test -d $z then cd $z; remplaceSpaceInDirectory; cd .. fi done } remplaceSpaceInFile() { oneSpaceInFile for z in $(ls) do if test -d $z then cd $z; remplaceSpaceInFile; cd .. fi done } remplaceSpaceInDirectory remplaceSpaceInFile
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
25 avril 2008 à 20:09
25 avril 2008 à 20:09
Cool, merci ;-))
Par contre, pas la peine de faire 2 fonctions à chaque fois, une seule suffit avec la syntaxe traitant plusieurs espaces, elle traitera tout aussi bien, un seul espace que plusieurs ,-))
Par contre, pas la peine de faire 2 fonctions à chaque fois, une seule suffit avec la syntaxe traitant plusieurs espaces, elle traitera tout aussi bien, un seul espace que plusieurs ,-))