如何在不同路径下批量复制和重命名同名文件?

How do I batch copy and rename files with same name in different path?

我有一组文件夹,在每个文件夹中我有几个子文件夹。在每个子文件夹中都有一个名为 result.txt 的文件,我需要将所有 result.txt 复制到其他位置重命名结果文件。

文件夹:

 abc1
 efg1
 doc2
 ghih

子文件夹: 在 aaa1

1.abc1.merged
2.abc1.merged
3.abc1.merged
4.abc1.merged

efg1

1.efg1.merged
2.efg1.merged
3.efg1.merged
4.efg1.merged
5.efg1.merged
...
...

等等 所有子文件夹都包含 result.txt 在一个不同的文件夹中,所有结果文件重命名为 result1.txt、result2.txt 等

我试图将子文件夹的名称设置为 shell 脚本中的变量,并循环进入子文件夹并将 result.txt 复制到其他路径并重命名通过 mv command.But 仅复制每个子目录中的 result.txt 文件,而不是全部。

我尝试了以下命令:

cp  $folder/$subfolder/resu*txt ../tsv/$newfolder/

(我之前赋值过变量)

mv  ../tsv/$newfolder/resu*txt ../tsv/$newfolder/results$tts.txt

(我将 $tts 定义为文件夹中子文件夹的数量)

这仅从每个父文件夹中的第一个子文件夹复制了 result.txt。

我会这样说:

i=1
for dir in **/*;  # loop through files
do
    cp "$dir"/result.txt $your_path/result$i.txt
    ((i++))       # increment variable $i
done

语法 **/* 遍历所有子目录。

测试

$ mkdir a
$ cd a
$ mkdir a{1..4}
$ mkdir a{1..4}/a{1..4}
$ for f in **/*; do echo "$f --"; done

最后一条命令returns

a1/a1 --
a1/a2 --
...
a4/a4 --