微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bash,移动和重命名文件到基本父目录名称

如何解决Bash,移动和重命名文件到基本父目录名称

我有一堆名称不同的基本父文件夹。

在这些基本父文件夹中的每一个中,我都有一个具有相同名称文件夹(结果)。

在每个结果文件夹中,我有一个结果文件 (data.txt),在每个 base-parent-folder 中也命名相同。

我需要将所有 data.txt 文件移动到一个文件夹 (newfolder),并将它们重命名为 base-parent-folder 名称

for name in ./*/*/data.txt; do 
mv "$name" "../newfolder/$(basename -- "$(dirname -- "$name")").txt";
done 

这将移动文件,但将 data.txt 文件重命名为 result.txt,而不是唯一的基本父文件名称

非常感谢帮助:D

我有什么:

data\data1\result\data.txt

data\data2\result\data.txt

data\data3\result\data.txt

data\data4\result\data.txt

data\data5\result\data.txt

我想要的:

data\newfolder\data1.txt

data\newfolder\data2.txt

data\newfolder\data3.txt

data\newfolder\data4.txt

data\newfolder\data5.txt

解决方法

for f in */*/data.txt; 
    do mv "$f" "./newfolder/${f%/*/*}.txt"; 
    done  

为我工作。 ./ 部分不起作用。它想在移动文件时添加一个名为 . 的额外文件夹。

感谢您的帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。