复制文件,然后根据以前的位置重命名为新文件夹(批处理)

时间:2011-10-08 06:13:00

标签: shell scripting

我遇到了一个相当简单的问题,但我无法解决它。我决定寻求一些帮助。我的脚本不是很好,我希望我能在这个网站上找到撒玛利亚人。 我有以下格式的文件:

/test1/da/0/1/nnn.dat
/test1/da/0/2/nnn.dat
/test1/da/0/3/nnn.dat
…
/test1/da/y/n/nnn.dat
/test1/da/y+1/n+1/nnn.dat
/test1/da/y+1/n+2/nnn.dat
…
/test1/da/y+n/n+n/nnn.dat

我想将位于每个子文件夹中的所有nnn.dat文件复制到/newfolder/nnn.dat中,以便每个nnn.dat根据其位置重命名,例如:

/newfolder/0_1_nnn.dat
/newfolder/0_2_nnn.dat
/newfolder/0_3_nnn.dat
…
/newfolder/y_n_nnn.dat

另外,我想用一组特定的字符替换nnn.dat文件的特定行号。

请帮助!

1 个答案:

答案 0 :(得分:0)

for f in /test/da/*/*/*.dat; do
  yn="${f##/test/da/}"
  b="${yn##*/}"
  yn="${y%/*}"
  y="${yn%%/*}"
  n="${yn##*/}
  cp "$f" "/newfolder/${y}_${n}_${b}"
done