2017-10-03 5 views
0

Je veux renommer tous les fichiers dans un répertoire pour être des numéros séquentiels:Renommer des fichiers en chiffres, en commençant par un certain nombre

1.txt 
2.txt 
3.txt 

et ainsi de suite ...

Voici le code que je suis utilisant actuellement:

ls | cat -n | while read n f; do mv "$f" "$n.txt"; done 

Le code fonctionne, mais je dois commencer par un numéro spécifique. Par exemple, je voudrais commencer par le numéro 49 au lieu du numéro 1.

Y at-il un moyen de le faire dans un terminal (sur un Mac)?

Répondre

2

Vous pourrait utiliser quelque chose comme nl with the -v option pour définir un numéro de ligne de départ autre que 1, mais au contraire, vous pouvez simplement utiliser les caractéristiques Bash:

i=1 
for f in *;do 
    [[ -f $f ]] && mv "$f" $((i++)).txt 
done 

i est réglé sur la valeur initiale que vous voulez.

Ceci évite également d'analyser la sortie de ls, qui est recommended to avoid. Au lieu de cela, j'utilise un glob (*) et un test (-f) pour m'assurer que je manipule réellement des fichiers et non des répertoires.

+0

Cela a fonctionné parfaitement! J'accepterai de répondre dans 4 minutes quand ça me le permet. Merci! – Geo