欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂Linux培訓(xùn)簡(jiǎn)述如何修改shell遞歸遍歷目錄下的所有文件的名稱(chēng)

2018-11-29 16:54:16 1183瀏覽

本篇文章小編和讀者們分享一下shell遞歸遍歷目錄下的所有文件并統(tǒng)一改名的方法,對(duì)Linux開(kāi)發(fā)技術(shù)感興趣或者是想要加入Linux培訓(xùn)機(jī)構(gòu)學(xué)習(xí)的小伙伴可以好好了解一下,文章中有詳細(xì)的代碼列出,對(duì)Linux開(kāi)發(fā)感興趣的小伙伴就隨小編一起來(lái)看一下吧。



扣丁學(xué)堂Linux培訓(xùn)簡(jiǎn)述如何修改shell遞歸遍歷目錄下的所有文件的名稱(chēng)



我們先拋出一個(gè)問(wèn)題,如何把某個(gè)目錄下的每個(gè)文件統(tǒng)一在名字前加上”abc”,用shell實(shí)現(xiàn)。


首先分析,一個(gè)目錄下除了文件,還可能存在目錄,這里可以看出需要有遞歸操作,如果是文件直接改名,目錄則進(jìn)入然后進(jìn)行遍歷。




如何實(shí)現(xiàn)遍歷?我們寫(xiě)一個(gè)函數(shù):


function travFolder(){ 
  #echo "travFolder"
  flist=`ls $1`
  cd $1
  #echo $flist
  for f in $flist
  do
    if test -d $f
    then
      #echo "dir:$f"
      travFolder $f
    else
      #echo "file:$f"
      changeName $f
    fi
  done
  cd ../ 
}


每次對(duì)新的目錄調(diào)用travFolder方法,首先用ls命令獲得新目錄下的文件名,接下來(lái)這一步很重要,cd這個(gè)新的目錄,因?yàn)槲覀冎皇钦{(diào)用了 這個(gè)函數(shù),其實(shí)還停留在上一層目錄。注意,ls和cd的動(dòng)作不能弄反。



接下來(lái)是怎么對(duì)文件進(jìn)行改名,關(guān)鍵就是sed命令:


function changeName(){
  new=`echo $1|sed 's/^/abc/g'`
  #new=`echo $1|sed -r 's/abc(.*$)/\1/g'`
  #echo $new
  mv $1 $new
}


sed命令支持正則表達(dá)式,我們將文件名作為sed命令的輸入處理,'s/^/abc/g'是替換命令,s是替換處理,格式為s/old/new/g,^表示匹配字符串的開(kāi)始,這個(gè)命令的效果就是在字符串開(kāi)頭插入abc。



下一面一句注釋的代碼:


new=`echo $1|sed -r 's/abc(.*$)/\1/g'`


表示把文件名用abc后面的字符替代,這里注意要使用命令-r,表示支持正則表達(dá)式的擴(kuò)展,否則解釋器是識(shí)別不了\1為分組這個(gè)意思的。



完整代碼如下:


#!/bin/bash
function changeName(){
  #new=`echo $1|sed 's/^/abc/g'`
  new=`echo $1|sed -r 's/abc(.*$)/\1/g'`
  #echo $new
  mv $1 $new
}
function travFolder(){ 
  echo "travFolder"
  flist=`ls $1`
  cd $1
  #echo $flist
  for f in $flist
  do
    if test -d $f
    then
      #echo "dir:$f"
      travFolder $f
    else
      #echo "file:$f"
      changeName $f
    fi
  done
  cd ../ 
}
dir=./TestDir
travFolder $dir



以上就是扣丁學(xué)堂Linux在線學(xué)習(xí)小編給大家分享的shell遞歸遍歷目錄下的所有文件并統(tǒng)一改名的方法,希望對(duì)小伙伴們有所幫助,想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢(xún)。



想要學(xué)好Linux開(kāi)發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專(zhuān)業(yè)老師制定的Linux學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Linux課程體系和Linux視頻直播課供大家學(xué)習(xí),想要學(xué)好Linux開(kāi)發(fā)技術(shù)的小伙伴快快行動(dòng)吧。扣丁學(xué)堂Linux技術(shù)交流群:422345477。


扣丁學(xué)堂微信公眾號(hào)


【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】



查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>



標(biāo)簽: linux系統(tǒng)入門(mén)學(xué)習(xí) linux培訓(xùn) linux視頻教程 linux基礎(chǔ)教程 linux在線視頻 linux在線學(xué)習(xí) linux從入門(mén)到精通 linux開(kāi)發(fā)環(huán)境包 linux系統(tǒng) linux開(kāi)發(fā)教程

熱門(mén)專(zhuān)區(qū)

暫無(wú)熱門(mén)資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢(xún)熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部