如何在linux上使用rename命令

抓住Linux世界的檔案重新命名引擎,讓mv和你自己休息一下。重新命名是靈活的,快速的,有時甚至更容易。下面是一個關於這個強大的命令的教程。...

抓住Linux世界的檔案重新命名引擎,讓mv和你自己休息一下。重新命名是靈活的,快速的,有時甚至更容易。下面是一個關於這個強大的命令的教程。

mv怎麼了?

mv沒什麼問題。這個命令做得很好,在所有Linux發行版、macOS和其他類似Unix的作業系統中都可以找到它。所以它總是可用的。但有時你只需要推土機,而不是鏟子。

mv命令在生活中有一個目的,那就是移動檔案。這是一個令人高興的副作用,它可以用來移動一個現有的檔案到一個新的檔案,一個新的名稱。最終的效果是重新命名檔案,這樣我們就得到了想要的。但是mv不是一個專門的檔案重新命名工具。

用mv重新命名單個檔案

要使用mv重新命名檔案,請鍵入mv、空格、檔名、空格以及希望檔案具有的新名稱。然後按Enter。

可以使用ls檢查檔案是否已重新命名。

mv oldfile.txt newfile.txt ls *.txt

如何在linux上使用rename命令

用mv重新命名多個檔案

當您要重新命名多個檔案時,事情會變得更加棘手。mv無法處理多個檔案的重新命名。你必須使用一些漂亮的花招。如果您知道一些中級命令列fu,這很好,但是使用mv重新命名多個檔案的複雜性與使用mv重新命名單個檔案的簡單性形成鮮明對比。

事態迅速升級。

假設我們有一個目錄,裡面有各種不同型別的檔案。其中一些檔案的副檔名為“.prog”。我們要在命令列中重新命名它們,以便它們具有“.prg”副檔名。

我們如何說服mv為我們做這件事?我們來看看檔案。

ls *.prog -l

如何在linux上使用rename命令

這裡有一種方法不需要編寫實際的Bash指令碼檔案。

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"

如何在linux上使用rename命令

那有用嗎?讓我們查一下檔案看看。

ls *.pr*

如何在linux上使用rename命令

所以,是的,成功了。它們現在都是“.prg”檔案,目錄中沒有“.prog”檔案。

剛才發生了什麼?

那個長長的命令到底做了什麼?我們把它分解一下。

for f in *.prog; do mv -- "$f" "${f%.prog}.prg"

第一部分啟動一個迴圈,依次處理目錄中的每個“.prog”檔案。

下一部分說明處理將做什麼。它使用mv將每個檔案移動到一個新檔案。新檔案將以原始檔名命名,不包括“.prog”部分。將使用“.prg”的新副檔名。

必須有一個更簡單的方法

非常肯定。這是重新命名命令。

rename不是標準Linux發行版的一部分,因此需要安裝它。它在不同的Linux家族中也有不同的名稱,但它們的工作方式都是一樣的。您只需根據所使用的Linux風格替換相應的命令名。

在Ubuntu和Debian衍生髮行版中,您可以這樣安裝重新命名:

sudo apt-get install rename

如何在linux上使用rename命令

在Fedora和RedHat派生的發行版中,您可以這樣安裝prename。注意首字母“p”,它代表Perl。

sudo dnf install prename

如何在linux上使用rename命令

要在ManjaroLinux中安裝它,請使用以下命令。請注意,重新命名命令稱為perl rename。

sudo pacman -Syu perl-rename

如何在linux上使用rename命令

我們再來一次

這次我們將使用重新命名。我們將把時鐘向後撥,這樣就有了一組“.prog”檔案。

ls *.prog

如何在linux上使用rename命令

現在讓我們使用下面的命令來重新命名它們。然後我們會和ls確認是否有效。如果您不使用Ubuntu或Debian派生的Linux,請記住用適當的命令名替換rename。

rename 's/.prog/.prg/' *.prog ls *.pr*

如何在linux上使用rename命令

這樣,它們現在都是“.prg”檔案,目錄中沒有“.prog”檔案了。

這次發生了什麼?

讓我們從三個部分來解釋這一點。

第一部分是命令名rename(對於其他發行版,則為prename或perl rename)。

最後一部分是*.prog,它告訴rename對所有的.prog檔案進行操作。

中間部分定義了我們希望對每個檔名所做的工作。s代表替代品。第一個術語(.prog)是rename將在每個檔名中搜索的內容,第二個術語(.prg)將被替換。

命令的中間部分,即中心表示式,是一個Perl“正則表示式”,它使rename命令具有了靈活性。

更改檔名的其他部分

到目前為止,我們已經更改了副檔名,讓我們修改檔名的其他部分。

目錄中有很多C原始碼檔案。所有檔名的字首都是“俚語”。我們可以和ls核實一下。

ls sl*.c

如何在linux上使用rename命令

我們將把所有出現的“俚語”替換為“sl”。命令的格式我們已經很熟悉了。我們只是在更改搜尋項、替換項和檔案型別。

rename 's/slang_/sl_' *.c

如何在linux上使用rename命令

這次我們要查詢“.c”檔案,並搜尋“slang”。每當在檔名中找到“slang\時,就會用“sl\替換”。

我們可以透過使用相同的引數重複上面的ls命令來檢查該命令的結果:

ls sl*.c

如何在linux上使用rename命令

刪除部分檔名

我們可以刪除檔名的一部分,方法是不使用任何內容替換搜尋詞。

ls *.c rename 's/sl_//' *.c ls *.c

如何在linux上使用rename命令

我們可以從ls命令中看到,.c檔案的前面都加上了“sl”。讓我們把它全部處理掉。

rename命令的格式與前面的相同。我們要找“.c”檔案。搜尋詞是“sl戡”,但沒有替換詞。兩個反斜槓之間沒有任何內容意味著什麼,一個空字串。

rename將依次處理每個“.c”檔案。它將在檔名中搜索“sl”。如果找到了,就什麼都沒有了。換句話說,搜尋詞被刪除。

第二次使用ls命令時,會確認已從每個“.c”檔案中刪除了“slè”字首。

限制對檔名特定部分的更改

讓我們使用ls來檢視檔名中包含字串“param”的檔案。然後我們將使用rename將該字串替換為字串“parameter”。我們將再次使用ls來檢視rename命令對這些檔案的影響。

ls *param* rename 's/param/parameter' *.c ls *param*

如何在linux上使用rename命令

找到四個檔名中有“param”。param.c、param_one.c和param_two.c的名字開頭都有“param”。第三個param.c在其名稱的末尾有“param”,就在副檔名之前。

rename命令將在檔名的任何地方搜尋“param”,並在所有情況下將其替換為“parameter”。

ls命令的第二次使用向我們表明,這正是所發生的事情。無論“param”位於檔名的開頭還是結尾,它都已被“parameter”替換

我們可以使用Perl的元字元來細化中間表示式的行為。元字元是表示字元位置或序列的符號。例如,^表示“字串的開始,$表示“字串的結束”,以及。表示任何單個字元(換行符除外)。

我們將使用字串元字元的開頭(^)將搜尋限制在檔名的開頭。

ls *param*.c rename 's/^parameter/value/' *.c ls *param*.c ls value*.c

如何在linux上使用rename命令

我們前面重新命名的檔案被列出,我們可以看到字串“parameter”位於三個檔名的開頭,它位於其中一個檔名的末尾。

我們的rename命令在搜尋詞“parameter”之前使用了行首(^)元字元。這告訴rename,如果搜尋詞位於檔名的開頭,則只考慮找到它。如果搜尋字串“parameter”在檔名中的任何其他位置,它將被忽略。

透過ls檢查,我們可以看到檔名末尾有“parameter”的檔名沒有被修改,但是名稱開頭有“parameter”的三個檔名的搜尋字串被替換項“value”替換

重新命名的威力在於Perl的威力。Perl的所有功能都可以由您使用。

使用分組搜尋

rename還有更多的祕密。讓我們考慮一下這樣一種情況:檔名中可能有類似字串的檔案。它們不是完全相同的字串,因此簡單的搜尋和替換在這裡不起作用。

在本例中,我們使用ls檢查哪些檔案以“str”開頭。其中有兩個,string.c和strangle.c。我們可以使用稱為分組的技術同時重新命名這兩個字串。

此rename命令的中心表示式將搜尋檔名中具有字元序列“stri”或“stra”的字串,其中這些序列後面緊跟著“ng”。換句話說,我們的搜尋詞將查詢“string”和“strang”。替代術語是“bang”。

ls str*.c rename 's/(stri|stra)ng/bang/' *.c ls ban*.c

如何在linux上使用rename命令

第二次使用ls可以確認string.c已經變成bang.c,而string.c現在變成bangle.c。

使用帶重新命名的翻譯

rename命令可以對名為translati***的檔名執行操作。翻譯的一個簡單示例是強制將一組檔名轉換為大寫。

請注意,在下面的rename命令中,我們不是使用s/來啟動中心表示式,而是使用y/。這說明我們不是在執行替換,而是在執行翻譯。

a-z是一個Perl表示式,表示從a到z的序列中的所有小寫字元。類似地,a-z表示從a到z的序列中的所有大寫字母。

此命令中的中心表示式可以解釋為“如果在檔名中找到從a到z的任何小寫字母,請用從a到z的大寫字元序列中的相應字元替換它們。”

要強制所有“.prg”檔案的檔名為大寫,請使用以下命令:

重新命名為“y/a-z/a-z/”*.prg

ls *.PRG

如何在linux上使用rename命令

ls命令告訴我們所有的“.prg”檔名現在都是大寫的。事實上,嚴格來說,它們不再是“.prg”檔案。它們是“.PRG”檔案。Linux區分大小寫。

我們可以透過反轉a-z和a-z項在中心表示式中的位置來反轉最後一個命令。

重新命名為“y/A-Z/A-Z/”*.PRG

ls *.prg

如何在linux上使用rename命令

你不可能在五分鐘內學會perl

掌握Perl是一種很好的方法。但是,要開始使用rename命令的省時功能,您根本不需要太多的Perl知識就可以在功能、簡單性和時間方面獲得巨大的好處。

  • 發表於 2021-04-03 12:15
  • 閱讀 ( 58 )
  • 分類:網際網路

你可能感興趣的文章

如何將資料從raspberry pi複製到pc:5種方法

...。然而,在此之前,值得考慮的是第六種選擇,以及它是如何絕對錯誤的方式。 ...

  • 發佈於 2021-03-15 10:48
  • 閲讀 ( 60 )

使用powershell而不是批處理指令碼的5個原因

...以繼續執行這些可以使用PowerShell自動化的任務,並學習如何處理PowerShell錯誤。這應該足夠讓你開始了。 ...

  • 發佈於 2021-03-15 16:49
  • 閲讀 ( 95 )

您應該知道的基本windows cmd命令

...符不僅要有一個命令詞典,還要了解每個引數的含義以及如何將不同的引數組合起來以達到預期的效果。 ...

  • 發佈於 2021-03-15 18:07
  • 閲讀 ( 42 )

如何在linux上安裝和使用powershell

... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...

  • 發佈於 2021-03-16 02:34
  • 閲讀 ( 50 )

如何在android和termux上使用linux命令列

...許您在Android裝置上安裝誠實善良的Linux應用程式。下面是如何使用Termux應用程式。 ...

  • 發佈於 2021-03-18 07:26
  • 閲讀 ( 58 )

如何在windows10上獲得linux bash shell

... 如何在windows10上安裝linux bash shell ...

  • 發佈於 2021-03-21 11:48
  • 閲讀 ( 58 )

linux下如何重新命名檔案

要在Linux中重新命名檔案嗎?如果您知道如何在Windows、macOS或Chrome作業系統中完成這項工作,那麼您就知道如何在這裡完成這項工作。在大多數版本的Linux上,您只需右鍵單擊一個檔案並選擇Rename選項。 ...

  • 發佈於 2021-03-22 02:48
  • 閲讀 ( 63 )

linux正在吃掉你的公羊嗎?如何管理你的記憶

...記憶體。為了理解到底發生了什麼,我們必須看看Linux是如何管理記憶體的。 ...

  • 發佈於 2021-03-23 08:31
  • 閲讀 ( 54 )

如何在linux上使用groupadd管理使用者組

... 相關:如何在Linux中更改密碼 ...

  • 發佈於 2021-03-26 17:15
  • 閲讀 ( 39 )

如何在linux中新增使用者

想在Linux系統上新增使用者但不知道如何新增?在Linux上使用命令列介面管理使用者無疑是一項複雜的工作。而對於初學者來說,即使新增新使用者也是一場噩夢。 ...

  • 發佈於 2021-03-26 23:29
  • 閲讀 ( 64 )
念念是502
念念是502

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦