替換檔案名稱中的特定字元序列

替換檔案名稱中的特定字元序列

我的一個朋友在 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 !!!!and !!!by 0、and !!and !by 。1!

使用它

  1. 將腳本貼到空文件中,另存為rename.py
  2. 透過以下命令從終端機視窗運行它:

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

    其中<directory>是包含要重新命名的檔案的目錄。

答案3

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

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

匹配名稱開頭 ( )!處不跟有一個或兩個字符,以及!^s替代0;和

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

匹配名稱開頭 ( )!處不帶 a 的三個或四個字符,以及!^s替代1.

注意:該-n開關允許您進行“試運行”,而無需實際更改名稱 - 首先測試表達式,n如果您想繼續,則刪除 。

相關內容