j'ai un tas de noms de fichiers dans un dossier comme celui-ci:Correction des numéros de fichiers en utilisant bash
test_07_ds.csv
test_08_ds.csv
test_09_ds.csv
test_10_ds.csv
...
Je veux diminuer le nombre de chaque fichier, afin que ceux-ci deviennent:
test_01_ds.csv
test_02_ds.csv
test_03_ds.csv
test_04_ds.csv
...
Voici ce que je suis venu avec:
for i in $1/*; do
n=${i//[^0-9]/};
n2=`expr $n - 6`;
if [ $n2 -lt 10 ]; then
n2="0"$n2;
fi
n3=`echo $i | sed -r "s/[0-9]+/$n2/"`
echo $n3;
cp $i "fix/$n3";
done;
Y a-t-il une façon plus propre de faire cela?
si vous avez commande de changement de nom en fonction de Perl, essayez 'renommer -n « s/\ d +/sprintf "% 02d" , $ & - 6/e 'test_ * '...' -n' l'option est pour l'exécution à sec .. il pourrait se plaindre du fichier déjà existant en cas de conflit, mais devrait fonctionner si 'test_ *' est automatiquement trié, les nombres donnés sont tous les deux chiffres – Sundeep