如何逐个重命名目录树条目

如何逐个重命名目录树条目

我的文本文件包含两列:

current directory name                               the new name of the last entry

d_7154/d_7161/                                       'Main Integration'
d_7154/d_7161/d_9247/                                'Flows & Methodologies'
d_7154/d_7161/d_9247/d_8986/                         'General Guidelines'
d_7154/d_457/d_691/d_705/                            'Projects T to Z'
d_7154/d_457/d_691/d_6056/d_11253/d_11254/           'Templates'
d_7154/d_457/d_691/d_6056/d_11253/d_11254/d_11255/   'General Templates'
d_7154/d_457/d_691/d_6056/d_11253/d_11254/d_11256/   'Team Template'
...
...

有重命名树的方法吗?主要问题是,如果我更改树中间的目录名称,列表的其余部分将变得不相关。

答案1

邮购从算法上讲,目录遍历就是您想要的。

在 TCSH 或任何其他 shell 中执行此操作可能不会令人愉快。

这是一次性行为吗?如果是这样,请像使用新名称一样将树打印到文件中,并手动重新排序列表,以便最深的目录位于第一个,然后在脚本中重命名它们:

#!/bin/sh
mv d_7154/d_457/d_691/d_6056/d_11253/d_11254/d_11256   "d_7154/d_457/d_691/d_6056/d_11253/d_11254/Team Template"  
mv d_7154/d_457/d_691/d_6056/d_11253/d_11254/d_11255   "d_7154/d_457/d_691/d_6056/d_11253/d_11254/General Templates"  
mv d_7154/d_457/d_691/d_6056/d_11253/d_11254           "d_7154/d_457/d_691/d_6056/d_11253/Templates"  
mv d_7154/d_457/d_691/d_705                            "d_7154/d_457/d_691/Projects T to Z"  
mv d_7154/d_7161/d_9247/d_8986                         "d_7154/d_7161/d_9247/General Guidelines"  
mv d_7154/d_7161/d_9247                                "d_7154/d_7161/Flows & Methodologies"  
mv d_7154/d_7161                                       "d_7154/Main Integration"  
...  
...  

相关内容