#1 Le 18/05/2014, à 20:29
- omnimax
substitution de chemin et de caractère en général
bonsoir,
je sais remplacer la fin d'un path par une autre extension
for i in **/*.(png|PNG) ; do convert "$i" "${i/.???/.jpg}" ; done
par contre je ne sais pas remplacer le début d'un path par un autre path
j'aimerais pouvoir faire cela
echo "$i"
/home/omnimax/vacances.png
/home/omnimax/documents/essai.png
substitution sur "$i" en mentionnant /home/omnimax/images et echo "$i"
donnerait
/home/omnimax/imagess/vacances.png
/home/omnimax/images/essai.png
Dernière modification par omnimax (Le 18/05/2014, à 20:30)
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#2 Le 18/05/2014, à 20:43
- pingouinux
Re : substitution de chemin et de caractère en général
Bonsoir,
for i in ...; do cp -i "$i" /home/omnimax/images; done
Hors ligne
#3 Le 19/05/2014, à 08:47
- omnimax
Re : substitution de chemin et de caractère en général
#!/bin/bash
vari=$(for i in $HOME/Documents/*; do cp -i "$i" $HOME/Pictures; done)
echo "$vari"
exit 0
merci cela fonctionne, par contre
echo "$svari" ne me renvoi rien alors que l'opération s'exécute bien ?
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#4 Le 19/05/2014, à 12:13
- omnimax
Re : substitution de chemin et de caractère en général
normal qu'il ne me renvoi rien puisque cp s'effectue sans code d'erreur
on s'est mal compris...ce qu'il me faut c'est pouvoir substituer virtuellement le path avec un autre.
Il faudrait que dans ma boucle ma variable i devienne
/home/omnimax/imagess/vacances.png
/home/omnimax/images/essai.png
au lieu de
/home/omnimax/vacances.png
/home/omnimax/documents/essai.png
mais sans effectuer la copie car je dois me servir de cette variable i pour la réinterpréter dans un bout de code par après.
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#5 Le 19/05/2014, à 16:58
- pingouinux
Re : substitution de chemin et de caractère en général
À adapter :
for i in /home/omnimax/imagess/vacances.png /home/omnimax/images/essai.png; do echo "$i" "/home/omnimax/images/${i##*/}"; done
Résultat
/home/omnimax/imagess/vacances.png /home/omnimax/images/vacances.png
/home/omnimax/images/essai.png /home/omnimax/images/essai.png
Hors ligne
#6 Le 19/05/2014, à 21:06
- omnimax
Re : substitution de chemin et de caractère en général
yes
par contre je voudrais pas être pénible mais tu pourrais m'expliquer l'usage des symboles dans :
${i##*/}
merci
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#7 Le 19/05/2014, à 21:37
- pingouinux
Re : substitution de chemin et de caractère en général
Voir man bash, rubrique Parameter Expansion.
${i##*/}
va enlever à la variable i un préfixe constitué de tous les caractères jusqu'au dernier /
Hors ligne
#8 Le 20/05/2014, à 08:41
- omnimax
Re : substitution de chemin et de caractère en général
super merci, je me suis mis à lire le man bash (français ) et je dois te dire que c'est quand même ardu-ardu...
Tu l'as étudié uniquement via man bash ?
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#9 Le 20/05/2014, à 09:17
- pingouinux
Re : substitution de chemin et de caractère en général
Tu l'as étudié uniquement via man bash ?
Pas uniquement. Les discussions sur le forum sont une mine de renseignements, et donnent souvent des solutions auxquelles on n'aurait pas pensé.
Dans ton exemple, on pourrait faire aussi
$(basename "$i")
(voir man basename)
Hors ligne