Прежде всего, я предполагаю, что в имени файла нет пробелов. тогда
ls/find...| awk -F'-|\\.' '{o=$0;$3=sprintf("%04d",$3);$4=".data";gsub(/-\./,".");print "mv "o" "$0}' OFS='-'
выведет команду mv ...
. для их выполнения просто подключите вывод к sh
, как
ls...|awk ..|sh
ядро - часть awk, немного протестируйте его:
kent$ echo "trackingData-00-1.data
trackingData-00-2.data"|awk -F'-|\\.' '{o=$0;$3=sprintf("%04d",$3);$4=".data";gsub(/-\./,".");print "mv "o" "$0}' OFS='-'
mv trackingData-00-1.data trackingData-00-0001.data
mv trackingData-00-2.data trackingData-00-0002.data