如何在不同路径下批量复制和重命名同名文件?
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 --
我有一组文件夹,在每个文件夹中我有几个子文件夹。在每个子文件夹中都有一个名为 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 --