gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 06:42:31 25 4
gpt4 key购买 nike

我有一组文件夹,在每个文件夹中我有几个子文件夹。在每个子文件夹中都有一个名为 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 命令重命名。但只有结果来自一个子目录的 .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

最后一条命令返回

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

关于shell - 如何在不同路径下批量复制和重命名同名文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com