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

linux批量文件名

發布時間: 2022-10-25 04:50:05

『壹』 linux怎麼批量修改文件名稱

可以用腳本實現批量文件名稱修改,以perl腳本為例:

注釋:

1. # touch rename.perl //創建一個文件:rename.perl , 內容如下。

2. # chmod +x rename.perl

3. # cp rename.perl /bin/

4. # rename.perl 's/gongxu/leibie/g' * //將目錄中所有文件名中的 gongxu 替換為 leibie。

#!/usr/bin/perl -w
# rename - Larry's filename fixer
#用法: Perl表達式 [要處理的文件名]
$op = shift or die "Usage: rename expr [files]\n";

#如果沒有給出要處理的文件名則從標准輸入讀入
chomp(@ARGV = <STDIN>) unless @ARGV;

for (@ARGV) {
$was = $_;
eval $op; #對待處理的文件名($_)執行用戶輸入的Perl表達式$op
die $@ if $@; #退出 , 如果eval出錯
rename($was,$_) unless $was eq $_;
}

rename腳本的經典實例示範:

% rename.perl 's/\.orig$//' *.orig #移除文件末尾的.orig

% rename.perl "tr/A-Z/a-z/ unless /^Make/" * #所有非Make打頭的文件名大寫轉為小寫

% rename.perl '$_ .= ".bad"' *.f #每個*.f文件後面追加一個.bad

% rename.perl 'print "$_: "; s/foo/bar/ if =~ /^y/i' * #回顯每個待處理的文件名, 等待輸入, 如果用戶輸入以y或Y打頭, 把文件名中的foo替換成bar

% find /tmp -name "*~" -print | rename.perl 's/^(.+)~$/.#$1/' #把 /tmp目錄裡面每個文件名末尾有~的文件名改成以.#開頭

『貳』 Linux 下使用 shell 批量修改文件名的三種方法

1、通過sed替換

[root@node01 wolf]# find / -type f -name wolf.log

/wolf.log

/tmp/wolf.log

/root/wolf/wolf.log

[root@node01 wolf]# sed -i 's#wolf#yujing#g' find / -type f -name wolf.log

[root@node01 wolf]# find / -type f -name "wolf.log" | xargs cat

yujing

yujing

yujing

[root@node01 wolf]#

2、通過變數子串替換

vi laolang.log

wolf_20170806_1_wolf.jpg

wolf_20170806_2_wolf.jpg

wolf_20170806_3_wolf.jpg

wolf_20170806_4_wolf.jpg

wolf_20170806_5_wolf.jpg

wolf_20170806_6_wolf.jpg

wolf_20170806_7_wolf.jpg

wolf_20170806_8_wolf.jpg

wolf_20170806_9_wolf.jpg

wolf_20170806_10_wolf.jpg

[root@node01 data]# touch cat laolang.log |tr "\n" " "

[root@node01 data]# ll

total 8316

drwxr-xr-x 6 root root 4096 Jul 8 07:24 apache-maven-3.3.9

-rw-r--r-- 1 root root 8491533 Jul 8 07:23 apache-maven-3.3.9-bin.tar.gz

-rw-r--r-- 1 root root 0 Jul 29 14:16 cat

drwxr-xr-x 2 root root 4096 Jul 29 06:00 day1

drwxr-xr-x 2 root root 4096 Jul 29 11:50 day2

drwxr-xr-x 2 root root 4096 Jul 29 14:12 day3

-rw-r--r-- 1 root root 251 Jul 29 14:16 laolang.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_10_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_1_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_2_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_3_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_4_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_5_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_6_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_7_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_8_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_9_wolf.jpg

[root@node01 data]# f=wolf_20170806_10_wolf.jpg

[root@node01 data]# echo $f

wolf_20170806_10_wolf.jpg

[root@node01 data]# echo ${f%wolf*.jpg}

wolf_20170806_10_

[root@node01 data]# mv $f echo ${f%wolf*.jpg}.jpg

[root@node01 data]# ll

total 8316

drwxr-xr-x 6 root root 4096 Jul 8 07:24 apache-maven-3.3.9

-rw-r--r-- 1 root root 8491533 Jul 8 07:23 apache-maven-3.3.9-bin.tar.gz

-rw-r--r-- 1 root root 0 Jul 29 14:16 cat

drwxr-xr-x 2 root root 4096 Jul 29 06:00 day1

drwxr-xr-x 2 root root 4096 Jul 29 11:50 day2

drwxr-xr-x 2 root root 4096 Jul 29 14:12 day3

-rw-r--r-- 1 root root 251 Jul 29 14:16 laolang.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_10_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_1_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_2_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_3_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_4_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_5_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_6_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_7_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_8_wolf.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_9_wolf.jpg

[root@node01 data]# for f in ls *wolf.jpg ;do mv $f echo ${f%wolf*.jpg}.jpg;done

[root@node01 data]# ll

total 8316

drwxr-xr-x 6 root root 4096 Jul 8 07:24 apache-maven-3.3.9

-rw-r--r-- 1 root root 8491533 Jul 8 07:23 apache-maven-3.3.9-bin.tar.gz

-rw-r--r-- 1 root root 0 Jul 29 14:16 cat

drwxr-xr-x 2 root root 4096 Jul 29 06:00 day1

drwxr-xr-x 2 root root 4096 Jul 29 11:50 day2

drwxr-xr-x 2 root root 4096 Jul 29 14:12 day3

-rw-r--r-- 1 root root 251 Jul 29 14:16 laolang.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_10_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_1_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_2_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_3_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_4_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_5_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_6_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_7_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_8_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_9_.jpg

3、修改擴展名

把上面的jpg更換為log

[root@node01 data]# f=wolf_20170806_10_.jpg

[root@node01 data]# echo ${f/%jpg/log} 

wolf_20170806_10_.log

[root@node01 data]# mv $f ${f/%jpg/log}

[root@node01 data]# ls

apache-maven-3.3.9 day1 laolang.log wolf_20170806_2_.jpg wolf_20170806_5_.jpg wolf_20170806_8_.jpg

apache-maven-3.3.9-bin.tar.gz day2 wolf_20170806_10_.log wolf_20170806_3_.jpg wolf_20170806_6_.jpg wolf_20170806_9_.jpg

cat day3 wolf_20170806_1_.jpg wolf_20170806_4_.jpg wolf_20170806_7_.jpg

[root@node01 data]# ll

total 8316

drwxr-xr-x 6 root root 4096 Jul 8 07:24 apache-maven-3.3.9

-rw-r--r-- 1 root root 8491533 Jul 8 07:23 apache-maven-3.3.9-bin.tar.gz

-rw-r--r-- 1 root root 0 Jul 29 14:16 cat

drwxr-xr-x 2 root root 4096 Jul 29 06:00 day1

drwxr-xr-x 2 root root 4096 Jul 29 11:50 day2

drwxr-xr-x 2 root root 4096 Jul 29 14:12 day3

-rw-r--r-- 1 root root 251 Jul 29 14:16 laolang.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_10_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_1_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_2_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_3_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_4_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_5_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_6_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_7_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_8_.jpg

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_9_.jpg

[root@node01 data]# for f in ls *.jpg ;do mv $f ${f/%jpg/log} ;done

[root@node01 data]# ll

total 8316

drwxr-xr-x 6 root root 4096 Jul 8 07:24 apache-maven-3.3.9

-rw-r--r-- 1 root root 8491533 Jul 8 07:23 apache-maven-3.3.9-bin.tar.gz

-rw-r--r-- 1 root root 0 Jul 29 14:16 cat

drwxr-xr-x 2 root root 4096 Jul 29 06:00 day1

drwxr-xr-x 2 root root 4096 Jul 29 11:50 day2

drwxr-xr-x 2 root root 4096 Jul 29 14:12 day3

-rw-r--r-- 1 root root 251 Jul 29 14:16 laolang.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_10_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_1_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_2_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_3_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_4_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_5_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_6_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_7_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_8_.log

-rw-r--r-- 1 root root 0 Jul 29 14:16 wolf_20170806_9_.log

以上就是本次分享的全部內容,現在想要學習的程序員歡迎關注六星社區,獲取更多技能與教程。

『叄』 linux下如何批量刪除文件名的某個字元串

win系統下批量刪去文件名中某些字元的方法:

第一步,安裝工具軟體後打開使用,通過點擊【添加文件】按鈕或者拖動的方式將文件添加到軟體中,可以同時添加幾百個文件到軟體中,添加成功後會顯示在軟體中。

『肆』 linux下批量修改文件名

例如你要刪的文件或目錄的總目錄為「/home/ttt」,那麼執行這條命令就能全刪除:
grep
-r
[email protected]
/home/ttt
|
awk
-f
':'
'{print
$1}'
|
xargs
rm
-rf

『伍』 linux批量修改文件名

#!/bin/bash
####################################
#wrote by dywer, Beijing 01/21/2010
####################################

file_path='/var/down' #文件路徑,結尾無杠
EXT='RPT' #欲改名的文件的擴展名

# 時間格式 [[CC]YY]MMDDhhmm[.ss]
touch -t 201001010000 /tmp/FROM.TAG # 開始時間
touch -t 201001021632 /tmp/TO.TAG # 結束時間
#
for FULL_NAME in `find $file_path/*.$EXT \
-newer /tmp/FROM.TAG -and ! -newer /tmp/TO.TAG`
do
OLD_NAME=${FULL_NAME%.$EXT}
NEW_NAME="${OLD_NAME}0000" #這是你要加的四個零
#NEW_NAME=`echo $FULL_NAME |sed 's#\(^[^.]*\)\..*$#\10000#'` # 另種方法,僅作參考
echo rename "$OLD_NAME.$EXT" to "$NEW_NAME.$EXT"
mv "$OLD_NAME.$EXT" "$NEW_NAME.$EXT"
done
#
/bin/rm /tmp/FROM.TAG
/bin/rm /tmp/TO.TAG
#--------------------------------
RHEL5已經測試過了,怎麼執行腳本相信你一定了解,呵呵,我不多說了

『陸』 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中如何批量修改文件名

for file in "1.txt" "2.txt" "3.txt"
do
echo $file|rename "s/\.txt/\.doc/g"
done

如果當前目錄下全部的txt都要改成doc,只要
rename 's/\.txt/.doc/' *.txt

『捌』 linux下如何批量修改文件名

for file in "1.txt" "2.txt" "3.txt"
do
echo $file|rename "s/\.txt/\.doc/g"
done

如果當前目錄下全部的txt都要改成doc,只要
rename 's/\.txt/.doc/' *.txt
請採納。

『玖』 Linux批量提取文件名

簡單的獲取文件名的話,可以輸入命令:ls,如果需要把整個磁碟所有文件名字打出的話,需要寫個腳本,循環遞歸下。

『拾』 Linux 批量修改文件名 rename

安裝
Ubuntu: sudo apt-get install rename

[options] 部分先不看,其實就是:

其中:

以上每個部分都可以使用正則表達式,執行命令之後,就把原來的 oldname 換成了 newname,非常方便。

此外也可以使用通配符:

當命令中最後 file 為 * 時表示,匹配當前文件夾下所有文件,如果為 ? 時則匹配只有一個字元的文件名。

這一行命令的解釋就是,對當前文件夾下滿足 * 的所有文件,文件名中包含 aaaa 字元的替換為 bbbb 其中 "s/pattern/new/" 中的 / 一個都不能少。

因為支持正則表達式,那麼 $ 表示的就是結尾,將結尾替換為 .txt 也就意味著給所有文件添加 .txt 的後綴

結尾有 .txt 的內容替換為空,也就是刪掉後綴了。

注意,這里只是刪除了文件名中的欄位,並不是把文件給刪掉。

參考文獻: http://einverne.github.io/post/2018/01/rename-files-batch.html

熱點內容
kindeditor上傳圖片絕對路徑 發布:2025-05-14 01:06:27 瀏覽:276
廣數g96編程實例 發布:2025-05-14 01:01:56 瀏覽:912
安卓手機如何做一個小程序 發布:2025-05-14 01:01:51 瀏覽:969
linux怎麼訪問外網 發布:2025-05-14 01:00:24 瀏覽:953
玩dnf什麼配置不卡卡 發布:2025-05-14 00:57:02 瀏覽:807
android優秀項目源碼 發布:2025-05-14 00:54:58 瀏覽:206
dell伺服器怎麼裝系統 發布:2025-05-14 00:50:52 瀏覽:594
csgo怎麼進日本伺服器 發布:2025-05-14 00:39:18 瀏覽:748
ip查伺服器商家 發布:2025-05-14 00:33:37 瀏覽:213
雲伺服器布 發布:2025-05-14 00:27:55 瀏覽:79