Je voudrais ajouter du texte à la fin du nom de fichier mais avant l'extension. En ce moment j'essaye,
for f in *.shp; do echo $f_poly; done
la sortie est,
Quercus_acutifolia.shp_poly
Quercus_agrifolia.shp_poly
Quercus_corrugata.shp_poly
Quercus_cortesii.shp_poly
Quercus_costaricensis.shp_poly
Quercus_havardii.shp_poly
Quercus_hemisphaerica.shp_poly
Quercus_kelloggii.shp_poly
Quercus_knoblochii.shp_poly
Quercus_laceyi.shp_poly
Je veux que ce soit,
Quercus_acutifolia_poly.shp
Quercus_agrifolia_poly.shp
Quercus_corrugata_poly.shp
Quercus_cortesii_poly.shp
Quercus_costaricensis_poly.shp
Quercus_havardii_poly.shp
Quercus_hemisphaerica_poly.shp
Quercus_kelloggii_poly.shp
Quercus_knoblochii_poly.shp
Quercus_laceyi_poly.shp
Utilisation de expansion des paramètres POSIX standard :
for f in *.shp; do printf '%s\n' "${f%.shp}_poly.shp"; done
Parfois, un outil appelé "renommer" est installé.
rename 's/\.shp$/_poly.shp/' *shp
Il n'est peut-être pas portable, mais il est facile à utiliser.
Utilisez ceci:
for file in *.shp; do echo $(basename $file .shp)_poly.shp; done
Cela a mieux fonctionné pour moi:
for f in *; do NEW=${f%.webm}_2016.webm; mv ${f} "${NEW}"; done
Comme la question concerne bash
, il n'y a pas besoin d'utilitaires externes, car vous pouvez utiliser bash regexps :
for i in *.shp
do
mv -v "${i}" "${i%.*}_MYSUFFIX.${i##*.}"
done
S'ils se trouvent dans des emplacements différents, exécutez: -
for i in ` find /root/test/ -name "*.shp" ` ;
do
mv $i ` echo $i | sed 's/.shp$/_poly.shp/g' ` ;
done