欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

shell 遞歸遍歷目錄下的所有文件并統(tǒng)一改名的方法

 更新時(shí)間:2018年06月20日 15:32:32   作者:BananaKiller  
今天小編就為大家分享一篇shell 遞歸遍歷目錄下的所有文件并統(tǒng)一改名的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

遇到一道題目,如何把某個(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

以上這篇shell 遞歸遍歷目錄下的所有文件并統(tǒng)一改名的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • readelf命令讀取elf文件的詳細(xì)信息(推薦)

    readelf命令讀取elf文件的詳細(xì)信息(推薦)

    這篇文章主要介紹了readelf命令讀取elf文件的詳細(xì)信息,在這里使用一個(gè)elfDemo.rel作為示例,elfDemo.rel是elfDemo.c使用如下指令生成的,需要的朋友可以參考下
    2023-02-02
  • ftp自動(dòng)上傳腳本分享

    ftp自動(dòng)上傳腳本分享

    調(diào)試設(shè)備時(shí),往往需要反復(fù)將新編譯的二進(jìn)制通過(guò)ftp上傳到目標(biāo)機(jī)的指定目錄下,此工作的重復(fù)性過(guò)多,考慮將操作寫(xiě)為shell腳本
    2014-02-02
  • Linux中rpm命令用法詳解

    Linux中rpm命令用法詳解

    rpm命令是用于在基于RPM包管理系統(tǒng)的Linux發(fā)行版中安裝、查詢(xún)、升級(jí)和刪除軟件包的命令行工具,本文講給大家詳細(xì)的介紹一下Linux?rpm命令的使用方法,感興趣的同學(xué)跟著小編一起來(lái)看看吧
    2023-08-08
  • Linux shell數(shù)組與關(guān)聯(lián)數(shù)組的用法實(shí)例

    Linux shell數(shù)組與關(guān)聯(lián)數(shù)組的用法實(shí)例

    今天小編就為大家分享一篇關(guān)于Linux shell數(shù)組與關(guān)聯(lián)數(shù)組的用法實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • Shell腳本中判斷輸入變量或者參數(shù)是否為空的方法

    Shell腳本中判斷輸入變量或者參數(shù)是否為空的方法

    這篇文章主要介紹了Shell腳本中判斷輸入變量或者參數(shù)是否為空的方法,本文總結(jié)了5種方法,并分別給出了代碼實(shí)例,需要的朋友可以參考下
    2014-10-10
  • centos中mysql備份數(shù)據(jù)庫(kù)腳本分享

    centos中mysql備份數(shù)據(jù)庫(kù)腳本分享

    這篇文章主要介紹了centos中mysql備份數(shù)據(jù)庫(kù)腳本,可以做成mysql自動(dòng)備份工具,管理網(wǎng)站一定會(huì)用的到,需要的朋友可以參考下
    2014-03-03
  • Ubuntu、Linux Mint一鍵安裝Chrome瀏覽器的Shell腳本分享

    Ubuntu、Linux Mint一鍵安裝Chrome瀏覽器的Shell腳本分享

    這篇文章主要介紹了Ubuntu、Linux Mint一鍵安裝Chrome瀏覽器的Shell腳本分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03
  • shell自動(dòng)拉取鏡像并運(yùn)行容器的shell腳本

    shell自動(dòng)拉取鏡像并運(yùn)行容器的shell腳本

    本文主要介紹了shell自動(dòng)拉取鏡像并運(yùn)行容器的shell腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Linux Shell字符串變量拼接與賦值的使用

    Linux Shell字符串變量拼接與賦值的使用

    本文主要介紹了Linux Shell字符串變量拼接與賦值的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Linux tar 命令出現(xiàn) Cowardly refusing to create an empty archive 錯(cuò)誤解決辦法

    Linux tar 命令出現(xiàn) Cowardly refusing to create an empty archive

    這篇文章主要介紹了Linux tar 命令出現(xiàn) Cowardly refusing to create an empty archive 錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評(píng)論