Je voudrais faire précéder le formulaire d'ordonnance numérique 1-777 des ordres qui lui ont été donnés. Vous pouvez le boucler et incrémenter la variable dans Bash. Cependant, je voudrais le faire avec Zsh et / ou Awk. Un exemple suit. Noms de files
IMG_20161215_081850.jpg IMG_20161215_081851.jpg IMG_20161215_090559.jpg IMG_20161215_090601.jpg IMG_20161215_091308.jpg
Voulait
1.IMG_20161215_081850.jpg 2.IMG_20161215_081851.jpg 3.IMG_20161215_090559.jpg 4.IMG_20161215_090601.jpg 5.IMG_20161215_091308.jpg
OS: Debian 8.5
ls *.jpg | nl -s.
nl
va append des numéros de ligne; -s.
spécifie a .
comme séparateur entre le nombre et datatables (dans ce cas, les noms de file). Si vous voulez supprimer les espaces principaux de la sortie, vous pouvez append ceci:
ls *.jpg | nl -s. | sed 's/^ *//'
sed
supprimera alors zéro ou plusieurs espaces du début de la ligne.
Si vous voulez vraiment faire ça avec awk
:
ls *.jpg | awk '{ print NR"."$0 }'
NR
est une variable interne indiquant le nombre d'loggings analysés jusqu'à présent.
Pour apporter des modifications permanentes aux noms de files, procédez comme suit (Michael Vehrs)
ls *.jpg | nl -s. | sed 's/ *\([0-9]\+\)\.\(.*\)/\2 \1\.\2/' | xargs -n 2 mv
Avec zsh, utilisez zmv
pour effectuer un changement de nom en bloc. Exécutez d'abord autoload -U zmv
(mettez ceci dans votre .zshrc
), puis
i=1 zmv 'IMG_*.jpg' '$((i++)).$f'