Duas alterações no seu script atual:
-
não analisar ls ; em vez disso confie no globbing do shell
-
porque os arquivos estão em um subdiretório,
cd
lá primeiro e execute o loop ou usebasename
edirname
para extrair as partes de diretório e nome do arquivo antes de adicionar o prefixo.
(Nota: eu também mudei o seu "/ Path" para "./Path" porque eu não queria criar um diretório Path / level-root. Mas os mesmos princípios se aplicam.
Para configurar alguns arquivos de amostra:
mkdir Path && cd Path
touch CLY_BIZ_COM_PERD.dat jeff.dat a.dat c\ d.dat
cd ..
Aqui está uma corrida seca:
for f in ./Path/*.dat
do
printf "mv '%s' '%s'\n" "$f" "$(dirname "$f")/${key}$(basename "$f")"
done
Saída da corrida a seco:
mv './Path/a.dat' './Path/20160622a.dat'
mv './Path/c d.dat' './Path/20160622c d.dat'
mv './Path/CLY_BIZ_COM_PERD.dat' './Path/20160622CLY_BIZ_COM_PERD.dat'
mv './Path/jeff.dat' './Path/20160622jeff.dat'
Assim que estiver satisfeito, faça isso de verdade:
for f in ./Path/*.dat
do
mv "$f" "$(dirname "$f")/${key}$(basename "$f")"
done
... e o resultado:
$ ls -1 Path
20160622a.dat
20160622c d.dat
20160622CLY_BIZ_COM_PERD.dat
20160622jeff.dat