替换文件名中的特定字符序列

替换文件名中的特定字符序列

我的一个朋友在 Windows 上以这种方式分组了大量文件

在此处输入图片描述

在我让他切换到 Ubuntu 之后,文件不再根据前面的感叹号数量进行排序,所以我想知道如何按照这个规则切换它们:

  • 1对于!!!

  • 0对于!!!!!!!

我想我应该使用 awk,但我不是专家,因此我在这里..

答案1

要使用 GUI 批量重命名文件和目录,您可以使用GP重命名

GP重命名

您可以使用以下方式安装:

sudo apt-get install gprename

答案2

在 Python 脚本中:

#!/usr/bin/env python3
import os
import shutil
import sys

dr = sys.argv[1]
replace = ["!", "!!", "!!!", "!!!!"]

for f in os.listdir(dr):
    test = [f.startswith(s) for s in replace]
    if test.count(True) > 2:
        shutil.move(dr+"/"+f, dr+"/"+"0"+f.replace("!", ""))
    elif 0 < test.count(True) < 3:
        shutil.move(dr+"/"+f, dr+"/"+"1"+f.replace("!", ""))

它将替换 leading!!!!!!!by 0,以及!!and 和!by 1,假设!仅出现在名称的开头。

使用它

  1. 将脚本粘贴到空文件中,另存为rename.py
  2. 通过以下命令从终端窗口运行它:

    python3 /path/to/rename.py '<directory>'
    

    <directory>包含要重命名的文件的目录在哪里。

答案3

您也可以使用基于 perl 的rename命令,例如

rename -vn -- 's/^!{1,2}(?!!)/0/' *

匹配名称开头 ( )!处不以 a 结尾的一个或两个字符,并且!^s替代0;和

rename -vn -- 's/^!{3,4}(?!!)/1/' *

匹配名称开头 ( )!处不跟有 a 的三个或四个字符,并且!^s替代1

注意:该-n开关允许您进行“试运行”而无需实际更改名称 - 请先测试表达式,n如果要继续,请删除。

相关内容