如何使用子目录名称重命名子目录中的文件

如何使用子目录名称重命名子目录中的文件

我希望这不是重复的,因为它在 bash 中可能是非常基本的,但我总是发现类似的问题,但结果不同。我有很多子目录,每个子目录都包含一个“ aaa.txt”文件,这是子目录中唯一的txt文件。 txt 文件名始终相同(因此在上面的示例中,每个子目录中始终为“aaa”)。我需要将子目录名称添加到 txt 文件中。因此,假设我有./AAA/aaa.txt./BBB/aaa.txt,脚本的结果应该是: ./AAA/AAA_aaa.txt./BBB/BBB_aaa.txt

答案1

您可以使用 dirname 命令获取目录名,使用 basename 命令获取文件名,然后构造您想要的目标名称。假设您仅使用一个目录级别,您可以设置,例如

FILEPATH=AAA/aaa.txt

并重命名为

mv "$FILEPATH" "$(dirname "$FILEPATH")/$(dirname "$FILEPATH")_$(basename "$FILEPATH")"

相关内容