Bash腳本: 文件批量重命名 包括子文件夾

假如你有一個(gè)多層級(jí)文件夾痢畜,它包含了很多jpg文件以及子文件夾(也有jpg文件)〕婕福現(xiàn)在你想把所有文件批量重命令黑低,比如把jpg擴(kuò)展名改為png赘艳,或者把里面的IMG字符改為abc,可以用下面的命令克握。

新建一個(gè)文件(比如file.sh)蕾管,內(nèi)容如下,并用chmod a+x file.sh命令賦予可執(zhí)行權(quán)限菩暗。

#!/bin/bash
find . -type f -name '*.jpg' -exec sh -c '
  for f; do mv "$f" "${f//.jpg/.png}";
  done' sh {} +

從左到右依次解釋如下

  • find 文件查找命令
  • . 代表從當(dāng)前目錄中查找掰曾,可改為要查找的目錄
  • -type f 指定查找的文件類型,f代表普通文件regular file停团;如果只查找目錄旷坦,可以用d
  • -name '*.jpg' 指定要查找的文件名,注意這里要區(qū)分大小寫佑稠!如果不需要區(qū)分大小寫的話秒梅,用-iname。后面的'*.jpg'使用了通配符舌胶,*表示任意長(zhǎng)度的字符捆蜀,?表示單個(gè)字符。注意:要使用引號(hào)把文件名保護(hù)起來(lái)
  • -exec COMMAND {} + 針對(duì)所有符合條件的文件,執(zhí)行它后面的命令辆它,下面詳細(xì)解釋后面的命令:
  • sh -c提供了一個(gè)受保護(hù)的命令環(huán)境(contained environment context)誊薄,-c后面跟著要執(zhí)行的命令,如果不用-c的話娩井,會(huì)進(jìn)入用戶交互模式暇屋,等待用戶輸入命令。
  • for f; do COMMAND; done命令解釋:用for命令遍歷前面find命令的查找結(jié)果洞辣,依次把某個(gè)結(jié)果放在變量f中咐刨,然后在COMMAND中對(duì)f進(jìn)行操作,比如ls $f
  • mv "$f" "${f//.jpg/.png}":這里執(zhí)行的是重命名mv的操作扬霜,"$f"是舊的文件名定鸟,在構(gòu)建新的文件名時(shí),進(jìn)行了替換操作著瓶,把.jpg替換成.png联予。注意:假如文件名中有多個(gè).jpg,如果只想替換第一個(gè)匹配字符材原,使用"${f/.jpg/.png}"沸久;如果想替換所有的匹配字符,使用"${f//.jpg/.png}"余蟹。差別在于f后面是一個(gè)/(單次)還是兩個(gè)/(全局)卷胯。

另外:

  1. 如果想指定目錄深度(比如2級(jí)),可以使用-maxdepth 2威酒,如果設(shè)置為1則只查找當(dāng)前目錄窑睁。

  2. 關(guān)于-exec command {} +的詳細(xì)說(shuō)明,參考這里

-exec command {} +
This variant of the -exec option runs the specified command on the selected files, but the command line is built by appending each selected file name at the end; the total number of invocations of the command will be much less than the number of matched files. The command line is built in much the same way that xargs builds its command lines. Only one instance of '{}' is allowed within the command. The command is executed in the starting directory.

在macOS 10.13.6 High Sierra上測(cè)試通過葵孤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末担钮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子尤仍,更是在濱河造成了極大的恐慌箫津,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宰啦,死亡現(xiàn)場(chǎng)離奇詭異鲤嫡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绑莺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惕耕,“玉大人纺裁,你說(shuō)我怎么就攤上這事。” “怎么了欺缘?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵栋豫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我谚殊,道長(zhǎng)丧鸯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任嫩絮,我火速辦了婚禮丛肢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剿干。我一直安慰自己蜂怎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布置尔。 她就那樣靜靜地躺著杠步,像睡著了一般。 火紅的嫁衣襯著肌膚如雪榜轿。 梳的紋絲不亂的頭發(fā)上幽歼,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音谬盐,去河邊找鬼甸私。 笑死,一個(gè)胖子當(dāng)著我的面吹牛设褐,可吹牛的內(nèi)容都是我干的颠蕴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼助析,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼犀被!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起外冀,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寡键,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后雪隧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體西轩,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年脑沿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了藕畔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庄拇,死狀恐怖注服,靈堂內(nèi)的尸體忽然破棺而出韭邓,到底是詐尸還是另有隱情,我是刑警寧澤溶弟,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布女淑,位于F島的核電站,受9級(jí)特大地震影響辜御,放射性物質(zhì)發(fā)生泄漏鸭你。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一擒权、第九天 我趴在偏房一處隱蔽的房頂上張望袱巨。 院中可真熱鬧,春花似錦菜拓、人聲如沸瓣窄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)俺夕。三九已至,卻和暖如春贱鄙,著一層夾襖步出監(jiān)牢的瞬間劝贸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工逗宁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留映九,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓瞎颗,卻偏偏與公主長(zhǎng)得像件甥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哼拔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容