我正在运行 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
。然后转到根目录并rnmv
从find
命令中调用:
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 目录的位置 - 我无法从您的示例中看出。