[bash] récupérer la première occurence d'une série de digits dans une string
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.
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:
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') |