當前位置:首頁 » 操作系統 » 批量改名linux

批量改名linux

發布時間: 2025-08-24 17:46:36

① windows與linux下 如何批量更改文件名

提供一個在Linux下使用Shell腳本來批量改名的方法,我很久不用Windows系統了,所以只有Linux下的方法。

我這邊在Linux下的測試過程是下面這樣的:

「0」提醒:在終端terminal中,第一步就是把當前目錄切換到文件所在目錄,用cd命令。

「1」新建文件夾,起名為「rename_by_source」,用來放置「改名前的文件」、「shell腳本文件」、「文件名對應文件」,以及保存「改名後的文件」。你在自己電腦上操作時,也建議你把下載下來的需要改名的文件放到一個單獨的文件夾里,這樣容易查看一些。

「2」我新建的「rename_by_source」文件夾中,根據你給的文件名對應表,新建了4個「改名前的文件」,它們是空白文件,只是有個文件名而已,另外,估計文件類型是mp3文件,所以後綴名是.mp3,如果你的文件不是mp3類型的話,請屆時自行在shell腳本文件里更改相關的代碼行。

「3」在文件夾中,新建了「source_name.txt」文件,用來放置(改名前)與(改名後)的對應文件名,跟你給的圖片一樣,也是一行對應一個文件的,只不過,把ren那一列刪除了。如果你要直接使用下面提供的shell腳本的話,也請把你的文件名對應文件中的ren那一列刪除,並且「數字」名的前面不要有空格或其它字元。同時,你的文件名對應文件也請保存為「source_name.txt」這個名稱和格式的文件。

「4」shell腳本文件「rename_by_source.sh」,內容如下:

#!/bin/bash

catsource_name.txt|whilereadLINE
do
ori_name=${LINE:0:7};
des_name=${LINE:8};
cp"${ori_name}.mp3""${des_name}.mp3";
done

解釋一下,第3句是逐行讀取source_name.txt的內容,並賦值給變數LINE,第5句是把該行的第1至第8個字元作為原始文件名,第6句是把該行的第9至末尾的字元串作為新文件名,第7句是在當前文件夾下「復制」(原始文件名.mp3)文件並重命名為(新文件名.mp3)文件。

之所以採用「復制」而不是「移動」命令,主要還是希望避免誤操作。

「5」在前面的文件夾中,新建並保存上述shell腳本文件,然後在終端terminal里賦予此shell腳本文件的可執行許可權,反正也沒有什麼關系,我是直接改為了777許可權:

sudochmod777rename_by_source.sh

「6」在終端中,在當前文件夾下運行上述shell腳本文件:

./rename_by_source.sh

完成。

下面是我這里的測試截圖,

如有幫助,煩請採納,謝謝!

② Linux中,怎樣修改文件名

Linux中修改文件名使用mv命令,它可以將源文件重命名為目標文件,或將源文件移動至指定目錄。

1、mv命令的用法

mv[選項]...[-T]源文件目標文件
或:mv[選項]...源文件...目錄
或:mv[選項]...-t目錄源文件...

2、比如在當前目錄下有個test.txt的文件 ,要修改文件名為good.txt,則可以執行

mvtest.txtgood.txt

--backup=<備份模式>:若需覆蓋文件,則覆蓋前先行備份;
-b:當文件存在時,覆蓋前,為其創建一個備份;
-f:若目標文件或目錄與現有的文件或目錄重復,則直接覆蓋現有的文件或目錄;
-i:互動式操作,覆蓋前先行詢問用戶,如果源文件與目標文件或目標目錄中的文件同名,則詢問用戶是否覆蓋目標文件。用戶輸入」y」,表示將覆蓋目標文件;輸入」n」,表示取消對源文件的移動。這樣可以避免誤將文件覆蓋。
--strip-trailing-slashes:刪除源文件中的斜杠「/」;
-S<後綴>:為備份文件指定後綴,而不使用默認的後綴;
--target-directory=<目錄>:指定源文件要移動到目標目錄;
-u:當源文件比目標文件新或者目標文件不存在時,才執行移動操作。

③ linux下開發腳本搜索子目錄批量更改文件名

前言
本文主要給大家介紹了關於Linux shell用sed批量更改文件名的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。
示例

去除特定字元
目標:將 2017-01-01.jpg、2018-01-01.jpg 改為 20170101.jpg、20180101.jpg

方法:將所有 - 替換為空
for file in `ls | grep .jpg`
do
newfile=`echo $file | sed 's/-//g'`
mv $file $newfile
done

這里使用sed進行標准輸出的字元串替換,其通用格式如下:
stdout | sed 's/pattern/replace/'

上述示例中,在末尾添加g用於替換所有匹配項,而不僅僅替換第一個匹配項。
中間插入字元
目標:將 book01.txt、paper02.txt 改為 book-01.txt、paper-02.txt
方法:用分組匹配分別獲取待插入位置兩側的字元串,再通過反向引用實現替換
for file in `ls | grep .txt`
do
newfile=`echo $file | sed 's/\([a-z]\+\)\([0-9]\+\)/\1-\2/'`
mv $file $newfile
done

分析

上述示例首先通過 ls 和 grep 命令得到待改名的文件列表,然後用 sed 命令進行字元串的替換,最後再使用 mv 命令來完成文件名的更改。
獲取待改名文件列表的方法有很多,可以通過 find 命令,也可以直接給出字元串,我們將在下文中提到。
注意 for 循環後面的 ls | grep .txt,這條命令用兩個反單引號括了起來,與 $(ls | grep .txt) 的作用相同,被包圍的字元串會被當作命令執行,然後返回字元串結果。
文件名包含空格的解決方法
我們可以直接將文件列表寫到 for 循環中,而不是通過命令來得到,例如:
for file in "file1 file2 file3"
do
...
done

可以看到 for 循環是通過空格來分割字元串,因此如果待更改的文件名中包含空格的話,就會被拆分成多個文件名,從而出錯。
要解決這個問題,我們可以將 IFS(內部欄位分隔符)設置為換行符 \n,這樣一來,for 循環就會按行來獲取變數的值,確保每次獲取的確實是一個完整的文件名。
設置 IFS 變數的命令需要放在 for 循環之前:
IFS=$'\n'
for file in `ls`
do
...
done

也可以直接使用 while read 命令一次讀取一行到變數 file 中:
ls | grep "*.txt" | while read file
do
...
done

使用 find 獲取文件列表
之前的示例中,我們是通過 ls 命令來獲取文件列表。該命令只能獲取某個目錄的文件,而且沒法進行多種條件的篩選。
而一說到文件的查找,不得不提到功能強大的 find 命令。該命令可以在多個層次的目錄中查找文件,並能夠設定諸如創建時間、文件大小、所有者等多種條件,查找起文件來特別方便靈活。
用 find 命令來獲取文件列表,再用 sed 命令配合正則表達式來修改文件名,這兩個命令的結合幾乎能完成所有常見的批量改名任務。
例如,將所有大於1M,且後綴為txt或jpg的文件,由形如 book_20170101.txt、image_20170101.jpg 的文件改名為 20170101-book.txt、20170101-image.jpg,代碼如下:
for file in `find . -size +1M -name "*_*.txt" -o -name "*_*.jpg"`
do
newfile=`echo $file | sed 's/\([a-z]\+\)_\([0-9]\+\)./\2-\1./'`
mv $file $newfile
done

熱點內容
壓縮機企業 發布:2025-08-24 21:35:14 瀏覽:922
三星證書存儲 發布:2025-08-24 21:29:27 瀏覽:908
古詩文源碼 發布:2025-08-24 21:20:15 瀏覽:399
androidxml字元 發布:2025-08-24 20:47:31 瀏覽:51
php頁面跳轉參數 發布:2025-08-24 20:46:25 瀏覽:826
java的常用設計模式 發布:2025-08-24 20:36:52 瀏覽:308
如何監聽ftp伺服器文件變化 發布:2025-08-24 20:32:45 瀏覽:650
哪裡下載暗黑破壞神2安卓版 發布:2025-08-24 20:01:28 瀏覽:665
安卓系統適配為什麼很難 發布:2025-08-24 19:59:38 瀏覽:154
國產電腦與雲伺服器 發布:2025-08-24 19:49:08 瀏覽:375