Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何在不同路径中批量复制和重命名同名文件?_Shell_Unix_Scripting_File Handling - Fatal编程技术网

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

Shell 如何在不同路径中批量复制和重命名同名文件?,shell,unix,scripting,file-handling,Shell,Unix,Scripting,File Handling,我有一组文件夹,在每个文件夹中我有几个子文件夹。在每个子文件夹中都有一个名为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.e

我有一组文件夹,在每个文件夹中我有几个子文件夹。在每个子文件夹中都有一个名为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命令对其重命名。但仅复制一个子目录中的result.txt文件,而不是全部

我尝试了以下命令:

cp  $folder/$subfolder/resu*txt ../tsv/$newfolder/
(I以前分配的变量)

(我将$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
语法
***
贯穿所有子目录

试验 最后一个命令返回

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

与Windows相关,因此请调整标签!也许你的意思是,或者,甚至,实际上是批处理。我会纠正的。谢谢
$ 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 --