Bonjour à tous,
ça fait un bon moment que je m'énèrve là-dessus.
J'ai fait un script bash qui fonctionne bien sous Linux mais qui ne marche pas sous MacOS.
Là où ça pèche, c'est que j'ai des strings de ce style:
123_bob_marley_03_2011_09
foo_776
blablobli_78876__33plop
Et j'aimerais récupérer uniquement la première série de digits se trouvant n'importe où dans la string. Pour mon exemple, cela donnerait:
123
776
78876
Avec sed, j'arrive à enlever tout ce qui vient éventuellement avant la série de digit:
mais pas ce qui vient après.
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed 's/[^0-9]*//'
Si j'utilise le g, le problème c'est que je récupère toutes les séries de digits, ce que je ne veux pas:
Juste pour information, voici le script en entier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed 's/[^0-9]*//g'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 while read file; do BASE=$(basename "$file") ID=$(sed 's/[^0-9]*//' <<< ${BASE%.*}) if [ -n "$ID" ] ; then mkdir -p "$ID" mv -v "$file" "$ID" fi done < <(find . -maxdepth 2 -iname '*.jpg' -or -iname '*.jpeg' -or -iname '*.mov' -or -iname '*.xml')
Partager