日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c 语言 批量更改文件名,rename 批量修改文件名

發布時間:2023/12/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c 语言 批量更改文件名,rename 批量修改文件名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

rename與mv的區別就是mv只能對單個文件重命名,而rename可以批量修改文件名

linux中的rename有兩種版本,一種是C語言版的,一種是Perl版的,如何區分系統里的rename是哪個版本的,可以通過一下方式:

輸入man rename 看到第一行中包含Linux Programmer’s Manual時,這就是C語言版本的,如果第一行中包含?Perl Programmers Reference Guide,則就是Perl版本的。

Perl語言版本的rename用法

perl版本的rename同sed中的語法類似,rename perl正則表達式 待處理的文件

替換 rename 's/.rtv.txt.kml/.kml/' *.kml 或者rename 's/foo0/foo/' foo0[2]* 將foo02開頭的文件名中的foo0替換為foo

刪除某些字符? rename 's/gps_//' *.kml或者rename 's/.bak$//' *.bak

其中,?可替代單個字符*可替代多個字符,三種通配符可以一起結合使用。

實例:

把所有文件名內含有大小字母的,修改為小寫字母:rename 'y/A-Z/a-z/'?*.txt

linux中允許文件名中包含空格,但文件名中有空格時,在命令行調用文件時要將文件名用雙引號引起來或者對空格進行轉義才能行,去除文件名中空格的實現命令有以下兩種方式:

find . -type f -name "* *" -print |while read name; do mv "${name}" `echo "${name}"|sed "s/[ ]\+/_/g"`;done

rename "s/[ ]+/_/g" *

其中[ ]+表示空格出現一次或多次,空格可以用[:space:]代替,該命令可替換為[[:space:]]+

在sed中需要將+轉義,但在rename中不能轉義,因為rename 采用的是標準perl正則語法

從命令中能夠看到sed與rename的區別,rename處理的是*所能匹配到的該目錄下的所有文件,它將所有文件名作為處理的對象,而命令sed 處理邏輯 文件名時,sed 處理的是文件內容,所以只能通過echo "文件名"|sed "s/[ ]\+/_/g的方式才能處理文件名

rename 's/^/hello/' * 統一在文件頭部添加上hello

rename 's/.html$/.htm/' * 統一把.html擴展名修改為.htm

rename 's/$/.zip/' * 統一在尾部追加.zip后綴:

rename 's/.zip$//' * 統一去掉.zip后綴

規則化數字編號名,比如1.jpg, 2.jpg ..... 100.jpg , 現在要使文件名全部三位即1.jpg .... 001.jpg,運行兩次命令:

rename 's/^/00/'? [0-9].jpg # 這一步把1.jpg ..... 9.jpg 變幻為001.jpg .... 009.jpg

rename 's/^/0/'?[0-9][0-9].jpg?# 這一步把10.jpg ..... 99.jpg 變幻為010.jpg ..... 090.jpg

C語言版本rename的用法

rename 原字符串 需改成的字符串 需要修改的文件

rename 'test' 'tast' *.txt,將文件名中的test改為tast

rename .jpeg.jpg *.jpeg? 修改文件的擴展名

總的來說:rename C語言版本所能實現的功能:批量修改文件名,結果是每個文件會被相同的一個字符串替換掉!也就是說,無法實現諸如循環 然后按編號重命名等

應用實例:

1.批量修改文件前綴

場景:folder A中有a.rtv b.a.c.imu a.t.gps a.y.ew.imu等等,想要將這些文件的文件名統一為test,后綴保持不變

一般的思路:

遍歷folder,依次獲取文件 ---> 獲取文件后綴${pre}--->使用mv ${file}? test.${pre}

該方法中沒有文件都要獲取后綴再執行mv命令,灰常復雜

rename方法:rename 's/.*\./test./' *即可,其中.*\.中.*代表匹配多次單個字符,\.代表對點進行轉義。

總結

以上是生活随笔為你收集整理的c 语言 批量更改文件名,rename 批量修改文件名的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。