#1 Le 20/10/2021, à 07:44
- fplus39
bash : tronquer chaine de caractères
bonjour tout le monde,
Dans un script :
#!/bin/bash
echo "Recherche des Fichiers dans /Input..."
for i in /home/myuser/Documents/myfolder01/myfolder02/Input/*
do
echo " Récupération du nom des fichiers..."
result= 'echo "${$i##/}"'
echo "Resultat = " $result
echo "==========================================="
echo "Traitement des fichiers..."
/home/myuser/Documents/folder01/folder02/mycommand -k -i $i -o "/home/myuser/Documents/folder01/folder02/Output/"$result -m "/home/myuser/Documents/folder01/folder02>
echo "==========================================="
echo "Nettoyage du dossier Input"
rm "$i"
done
echo "==========================================="
echo "Archivage des Logs"
mv *CLLog*.txt /home/myuser/Documents/folder01/folder02/logs
echo "Fin du Script"j'ai besoin de récupérer le nom des fichiers seuls, afin de la transférer, après traitement dans Output.
J'essaie donc de récupérer dans $result la valeur de $i à laquelle je dois tronquer le début de la chaine jusqu'au dernier slash inclus.
quand je fais
result= 'echo "${$i##/}"'J'obtiens l'erreur :
echo "${$i##/}": Aucun fichier ou dossier de ce typePourriez-vous m'aider à corriger mon erreur, svp?
Merci beaucoup et bonne journée ![]()
Hors ligne
#2 Le 20/10/2021, à 08:07
- Hizoka

Re : bash : tronquer chaine de caractères
Salut,
"${i##*/}"Fichier=/home/myuser/Documents/folder01/file1.ext
# Nom du fichier
echo "${Fichier##*/}"
# Extension du fichier
echo "${Fichier##*.}"
# Adresse du Fichier
echo "${Fichier%/*}"EDIT : Correction des " manquants
Dernière modification par Hizoka (Le 20/10/2021, à 14:44)
Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne
#3 Le 20/10/2021, à 09:05
- Arbiel
Re : bash : tronquer chaine de caractères
Bonjour
Il manque un " à la fin des deux premières lignes de commande
arbiel@arbiel-NK3S-8-S4:~$ echo "${Fichier##*/}"
file1.ext
arbiel@arbiel-NK3S-8-S4:~$ echo "${Fichier##*.}"
ext
arbiel@arbiel-NK3S-8-S4:~$ echo "${Fichier%/*}"
/home/myuser/Documents/folder01
arbiel@arbiel-NK3S-8-S4:~$
Arbiel Perlacremaz
Dell Vostro Ubuntu 18.04 64 bits, LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#4 Le 20/10/2021, à 14:44
- Hizoka

Re : bash : tronquer chaine de caractères
Corrigé, merci ![]()
Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne
#5 Le 29/10/2021, à 14:46
- fplus39
Re : bash : tronquer chaine de caractères
bonjour,
du coup, j'ai été au plus simple pour moi, comme je suis en chemins absolus :
result=`echo $i | cut -c 54-`
Mais je vais quand même revenir dessus .
Merci pour votre aide ![]()
Hors ligne
#6 Le 29/10/2021, à 16:31
- LeoMajor
Re : bash : tronquer chaine de caractères
salut,
l'embarras du choix;
result=$(cut .... <<<"$i")
result=$(basename "$i")
i="/home/toto/Musique/song ping pong (copie).mp3"
if [[ "$i" =~ ^\/.*\/((.*)\.(.*)) ]]; then echo "${BASH_REMATCH[1]}, ${BASH_REMATCH[2]}, ${BASH_REMATCH[3]}"; fi
retourne song ping pong (copie).mp3, song ping pong (copie), mp3
variante hs
:~$ gbs3 -e "with file: print .basename(\"$i\"):print .name(\"$i\"):print .ext(\"$i\") : end with"
song ping pong (copie)
song ping pong (copie).mp3
mp3Hors ligne
#7 Le 29/10/2021, à 17:39
- Hizoka

Re : bash : tronquer chaine de caractères
du coup, j'ai été au plus simple pour moi, comme je suis en chemins absolus :
result=`echo $i | cut -c 54-`On utilise plus `` mais $()
le echo ne sert à rien et rajoute un pipe
result=$(cut -c 54- <<< "$i")Et compter le nombre de caractère est franchement casse gueule...
Avec toutes les possibilités qu'il y a, tu n'as franchement pas fait un bon choix...
Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne
#8 Le 29/10/2021, à 19:17
- Watael

Re : bash : tronquer chaine de caractères
result=${i:54}mais non. ![]()
comme expliqué c'est maladroit.
ça, oui :
fname=${i##*/}c'est beaucoup mieux. ![]()
Welcome to sHell. · eval is evil.
Hors ligne