Python 重命名多个文件,但仅删除部分文件名

Python 重命名多个文件,但仅删除部分文件名,python,linux,bash,Python,Linux,Bash,我在Linux中尝试了('mv','sed')命令。 我有多个文件,我想删除文件的最后一个字符,如下所示 以前 natural1_dd-aa.txt natural2_dd-aa.txt natural3_dd-aa.txt 我想删除(“U dd-aa”) 之后 单向: ls *dd-aa* | sed 's/\(.*\)_dd-aa\(.txt\)/mv & \1\2/' | sh 仅列出具有该模式的文件(*dd aa*)。使用sed,准备mv命令,在模式前取第一部分(\u dd-

我在Linux中尝试了('mv','sed')命令。 我有多个文件,我想删除文件的最后一个字符,如下所示

以前

natural1_dd-aa.txt
natural2_dd-aa.txt
natural3_dd-aa.txt
我想删除
(“U dd-aa”)

之后

单向:

ls *dd-aa* | sed 's/\(.*\)_dd-aa\(.txt\)/mv & \1\2/' | sh
仅列出具有该模式的文件(
*dd aa*
)。使用
sed
,准备mv命令,在模式前取第一部分(
\u dd-aa
),在模式后取第二部分。并将其传递给shell。

这些天来,我一直在用它来解决这类问题

从pathlib导入路径
对于路径(“.”.glob(“*.txt”)中的路径:
path.rename(path.with_name(path.stem.partition(“_dd-aa”)[0]+path.后缀))

更新:在编辑问题时删除标签之前,此答案是合适的。它不再相关。)

如果有基本问题,尝试回答,但:

find . -name \*_dd-aa\* | while read filename
do
    mv "$filename" "$(echo $filename | sed 's/_dd-aa//g')"
done
…似乎按要求工作

方法
  • 查找包含
    \u dd-aa
  • 通过删除
    \u dd-aa
    部分获取新文件名
  • 使用
    mv
    重命名文件

  • 被否决是因为。可能是、、等的副本@tripleee谢谢你的参考。
    find . -name \*_dd-aa\* | while read filename
    do
        mv "$filename" "$(echo $filename | sed 's/_dd-aa//g')"
    done