在 Red Hat 中同时移动和重命名文件

在 Red Hat 中同时移动和重命名文件

我正在运行 Red Hat Release 6.5 (Santiago)。我面临的问题是,我在以下目录结构中有一堆文件:

temp2
├── ABC
│   └── temp2
│       └── temp2.txt
└── DEF
    └── temp2
        └── temp2.txt

我正在尝试将其更改为如下结构,但不知道如何完成。

temp2
├── ABC.txt
└── DEF.txt

任何帮助将不胜感激!

答案1

您需要创建一个小脚本文件来执行重命名/移动:调用它rnmv,然后将以下命令放入其中:

f="${1#./}"; echo mv "$f" "${f%%/*}.${f##*.}"

不要忘记chmod +x rnmv。然后转到根目录并rnmvfind命令中调用:

cd {wherever temp2 root is}
find . -name "temp2.txt" -exec rnmv "{}" \;

mv当您对创建的正确命令感到满意时,请删除该echo命令rnmv,然后您的重命名/移动就完成了。

最后一项任务是删除空子目录:

find . -name temp2 -exec rmdir "{}" \;

这是安全的,因为rmdir不会删除包含文件的目录。根据查找目录的顺序,您可能需要对 ABC/temp2/temp2 等结构重复该命令,因为在删除第二个目录之前,temp2 不会为空。

请注意,如果 ABC 在其子目录中有多个 temp2.​​txt 文件,则每个mv命令都会覆盖前一个 ABC.txt 文件,并且只留下最后找到的文件。

答案2

mv /temp2/ABC/temp2/temp2.txt /temp2/ABC.txt
mv /temp2/DEF/temp2/temp2.txt /temp2/DEF.txt

取决于高级 temp2 目录的位置 - 我无法从您的示例中看出。

相关内容