利用shell腳本進(jìn)行批量處理文件后綴名
shell腳本批量處理文件后綴名
flumes收集日常完成后會(huì)對(duì)收集的文件添加.COMPLETED后綴名。
我仍然使用原文件名,于是萌生了編寫 shell 腳本批量刪除文件后綴名的想法。
效果很好,但整個(gè)腳本功能太多單一,如果想按需修改文件后綴名呢?
于是編寫了 shell 腳本批量修改文件后綴名。
shell腳本批量刪除文件后綴名
批量刪除文件后綴名·.COMPLETED
#!/bin/bash input_dir=$1 if [ -z "$input_dir" ]; then echo "Usage: ./rename.sh input_directory" exit 1 fi cd "$input_dir" || exit for file in *.csv.COMPLETED; do newname=$(echo $file | sed 's/\.COMPLETED//') mv "$file" "$newname" done
執(zhí)行腳本
shell腳本批量修改文件后綴名
#!/bin/bash # 檢查參數(shù)數(shù)量是否正確 if [ "$#" -ne 3 ]; then echo "Usage: $0 <path> <old_extension> <new_extension>" exit 1 fi # 提取參數(shù) path=$1 old_extension=$2 new_extension=$3 # 查找并修改文件后綴名 find "$path" -type f -name "*.$old_extension" -exec sh -c 'mv "$0" "${0%.$1}.$2"' {} $old_extension $new_extension \;
執(zhí)行腳本
shell腳本批量修改文件名(文件名中添加字符)
腳本1
[root@localhost ~]# cat 02.sh #!/bin/bash #written by mofansheng@2016-02-17 path=/goodboy [ -d $path ] && cd $path for file in `ls` do mv $file `echo $file|sed 's/\(.*\)\.\(.*\)/\1_aaa.\2/g'` done
解釋說明:
使用sed替換,正則表達(dá)式第1個(gè)()括號(hào)里面代表文件名即\1;中間. 使用\進(jìn)行脫意,代表分隔符;
第2個(gè)括號(hào)里面代表后綴html內(nèi)容即\2;
使用此方法需要在替換中添加.符號(hào);
腳本2:
#!/bin/bash #written by mofansheng@2016-02-17 path=/goodboy [ -d $path ] && cd $path for file in `ls` do mv $file `echo $file|sed 's/\(.*\)\(\..*\)/\1_aaa\2/g'` done
解釋說明:
同樣使用sed替換,正則表達(dá)式,與上面的區(qū)別在于第2個(gè)括號(hào)里面的內(nèi)容,代表.html 分隔符和后綴名為一體,替換內(nèi)容的話不需要再單獨(dú)加.點(diǎn);.分隔符同樣需要使用\進(jìn)行脫意;
shell腳本批量修改文件名(刪除文件名中字符)
方法一:for循環(huán)結(jié)合sed替換
[baby@localhost ~]$ for file in `ls *.jpg`;do mv $file `echo $file|sed 's/_finished//g'`;done;
方法二:ls結(jié)合awk,輸出交給bash執(zhí)行
[baby@localhost ~]$ ls *.jpg |awk -F "_finished" '{print "mv "$0" "$1$2""}'|bash
實(shí)際執(zhí)行的命令如下,以_finished作為分隔符,mv及變量 需要加雙引號(hào)
[baby@localhost ~]$ ls *.jpg |awk -F "_finished" '{print "mv "$0" "$1$2""}' mv stu_102999_1_finished.jpg stu_102999_1.jpg mv stu_102999_2_finished.jpg stu_102999_2.jpg mv stu_102999_3_finished.jpg stu_102999_3.jpg mv stu_102999_4_finished.jpg stu_102999_4.jpg mv stu_102999_5_finished.jpg stu_102999_5.jpg
方法三:rename改名
[baby@localhost ~]$ rename "_finished" "" *.jpg
方法四:for循環(huán)加變量部分截取
[baby@localhost ~]$ for file in `ls *.jpg`;do mv $file `echo ${file%_finished*}.jpg`;done;
不使用echo也可以實(shí)現(xiàn)
[baby@localhost ~]$ for file in `ls *.jpg`;do mv $file ${file%_finished*}.jpg;done;
到此這篇關(guān)于利用shell腳本進(jìn)行批量處理文件后綴名的文章就介紹到這了,更多相關(guān)shell腳本處理文件后綴名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux 使用shell腳本處理字符串的實(shí)現(xiàn)
這篇文章主要介紹了Linux 使用shell腳本處理字符串的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12linux?shell實(shí)現(xiàn)折線圖代碼實(shí)例
這篇文章主要給大家介紹了關(guān)于linux?shell實(shí)現(xiàn)折線圖的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用shell具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12shell通過遍歷輸出兩個(gè)日期范圍內(nèi)所有日期的方法
這篇文章主要介紹了在shell通過遍歷輸出兩個(gè)日期范圍內(nèi)所有日期的方法,文中給出了詳細(xì)的示例代碼以及實(shí)現(xiàn)思路流程,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06shell腳本中set?-e選項(xiàng)作用范圍小結(jié)
本文主要介紹了shell腳本中set?-e選項(xiàng)作用范圍小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06通過短信發(fā)送LOG歸類號(hào)碼發(fā)送情況的shell腳本
通過短信發(fā)送LOG歸類號(hào)碼發(fā)送情況的shell腳本,有需要的朋友可以參考下2013-02-02Shell腳本實(shí)現(xiàn)隨機(jī)數(shù)多種方法介紹(date、random、uuid)
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)隨機(jī)數(shù)多種方法介紹,本文講解了通過時(shí)間獲得隨機(jī)數(shù)、通過內(nèi)部系統(tǒng)變量、通過系統(tǒng)內(nèi)部唯一數(shù)據(jù)生成隨機(jī)數(shù)等方法,需要的朋友可以參考下2014-11-11linux shell命令快捷獲得系統(tǒng)幫助(一)[man-pages定義規(guī)范]
linux命令幫助,一般有2種,命令自身代碼里面帶有使用幫助說明,這種一般很精簡(jiǎn),太長(zhǎng)了,程序自身的大小以及日常維護(hù)不方便。還有一種,就是帶有幫助文件,類似windows的chm格式文件。下面我說下這2種怎么樣查閱2015-10-10