以下命令找到了以下目录.

$ find tmp/ -name "date=*" -type d
tmp/year=2022/month=05/date=27
tmp/year=2022/month=05/date=21
tmp/year=2022/month=05/date=29
tmp/year=2022/month=05/date=24
tmp/year=2022/month=05/date=31
tmp/year=2022/month=06/date=01
tmp/year=2022/month=06/date=02

我需要通过将date=替换为day=来重命名目录.

find tmp/ -name "date=*" -type d -exec rename s/date=/day=/g "{}" +;

但是,该命令不会重命名目录?

我需要用Python实现它.

推荐答案

如果您使用的是Python 3.4+,则可以使用pathlib:

from pathlib import Path

tmp = Path('tmp')

for o in tmp.rglob('date=*'):
    if o.is_dir():
        o.rename(o.parent / o.name.replace('date', 'day'))

为了解决您在帖子 comments 中提到的问题,您可以判断目标目录是否已经存在,然后按照您想要的方式解决它.类似这样:

from pathlib import Path

tmp = Path('tmp')

for o in tmp.rglob('date=*'):
    new_name = o.parent / o.name.replace('date', 'day')
    if o.is_dir():
        if new_name.exists():
            # Your logic to work around a directory
            # that already exists goes here
        else:
            o.rename(new_name)

上面的代码只是一个初步的 idea .它需要很多改进才能变得更可靠.

Python相关问答推荐

KNN分类器中的GridSearchCV

为什么dict(id=1,**{id:2})有时会引发KeyMessage:id而不是TypMessage?

Python 3.12中的通用[T]类方法隐式类型检索

如何使用pandasDataFrames和scipy高度优化相关性计算

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

如何让程序打印新段落上的每一行?

如何更改分组条形图中条形图的 colored颜色 ?

给定高度约束的旋转角解析求解

为一个组的每个子组绘制,

将scipy. sparse矩阵直接保存为常规txt文件

Polars将相同的自定义函数应用于组中的多个列,

matplotlib图中的复杂箭头形状

如何防止Pandas将索引标为周期?

Flask Jinja2如果语句总是计算为false&

计算空值

当条件满足时停止ODE集成?

如果包含特定值,则筛选Groupby

如何在Gekko中使用分层条件约束

如何在PythonPandas 中对同一个浮动列进行逐行划分?

为罕见情况下的回退None值键入