переименование файлов в разных папках

#bash #shell #for-loop #rename

#bash #оболочка #for-цикл #переименовать

Вопрос:

у меня 1000 папок, и каждая папка содержит 5 файлов с одинаковыми именами, которые я хочу скопировать и переименовать под разными именами.

Например:

Путь к моим папкам

 /home/yuan/data/foldera1/*
/home/yuan/data/foldera2/*
/home/yuan/data/foldera3/*
/home/yuan/data/foldera4/*
.........................
/home/yuan/data/foldera1000/*
 

И файлы, которые я хочу переименовать, это

 data1.ax.ze  to  data.a1.z1
datay.ax.z1  to  data.a2.z2
dataw.ac.zt  to  data.a3.z3
data4.an.z5  to  data.a4.z4
datax.aa.zq  to  data.a5.z5
 

я попробовал сценарий ниже: но он не переименовывает файлы внутри каждой папки

 for file in /home/yuan/data/foldera?/*
do
cp data1.ax.ze    data.a1.z1
cp datay.ax.z1    data.a2.z2
cp dataw.ac.zt    data.a3.z3
cp data4.an.z5    data.a4.z4
cp datax.aa.zq    data.a5.z5
done
 

Надеюсь, эксперты помогут мне решить эту проблему.Заранее спасибо.

Ответ №1:

 for dir in /home/yuan/data/foldera*; do
  cd "$dir"
  cp data1.ax.ze    data.a1.z1
  cp datay.ax.z1    data.a2.z2
  cp dataw.ac.zt    data.a3.z3
  cp data4.an.z5    data.a4.z4
  cp datax.aa.zq    data.a5.z5
done