天天看點

Linux檔案夾下利用Bash腳本搜尋指定關鍵字檔案

原理:find指令的運用,如搜尋file檔案夾下所有包含2018和BUILDING兩個關鍵字的檔案

find file  -name '*2018*' -a -name '*BUILDING*'  或者簡寫:

find file -name '*2018*BUILDING'

(-a表示并,-o表示或)。

rename指令的運用。如果需要之後對找到的檔案進行批量重命名,rename格式如下:

rename '要替換的字元' '替換成的字元' file

如:将所有含有BUILDING的字元替換為TRAFFIC,

rename 'BUILDING' 'TRAFFIC' file

files='4425 4419 4441'   #cities為/inspur/FUSE_DATA/下檔案夾名稱,注意可以寫多個。

for city in $files             #echo city變量  輸出的是檔案夾下每個檔案的絕對路徑。

do

    echo " !!! !!! Processing City: $city !!! !!!"

    cityPath='/inspur/FUSE_DATA/'$city

    dstBuildingCoverPath='/inspur/CalCity/'$city'/Infos/Buildings'         #指定将搜尋到的檔案拷貝到此目錄

    imgBuildingCoverPaths=`find $cityPath -name '*2018*BUILDING_COVER.tiff'`

    imgBuildingCoverCounts=`find $cityPath -name '*2018*BUILDING_COVER.tiff' | wc -l`    #wc -l 統計檔案數

    numBuildingCover=0

    for srcImgBuildingCoverPath in $imgBuildingCoverPaths

    do

        numBuildingCover=$[$numBuildingCover+1]

        echo " !!! !!! Processing City: $city !!! Processing BuildingCover Img: $numBuildingCover !!! Total BuildingCover Imgs: $imgBuildingCoverCounts !!! !!!"

        cp $srcImgBuildingCoverPath $dstBuildingCoverPath

    done

done

find -name "*_GEO.xml" | xargs grep 'N'