我正在撰寫一個 bash 腳本來迭代掌舵圖,以使用 cat、grep、sed 等簡單命令僅獲取影像。
我們稱它為圖表 A。在圖表 A 中,我將執行命令cat | grep | sed ...將 docker 影像匯出到檔案中。此外,在圖表 A 內,可能有也可能沒有charts檔案夾。如果有檔案夾,請在該檔案charts夾內創建一個包含所有子檔案夾的陣列,charts然后進入每個子檔案夾并從頭開始重復。這種遞回一直持續到沒有charts要處理的檔案夾為止,所有檔案夾中的所有子檔案charts夾都被處理,并且在每個正在處理的檔案夾中,cat | grep | sed ...運行命令。
以下是我的代碼撰寫。charts當我運行腳本時,它沒有按預期遍歷所有檔案夾中的所有子檔案夾。
retrieve_images() {
basedir=$1
dirname=$2
# Run the command cat, grep, sed at each processing folder
cat | grep | sed ...
# Check if passed dirname is a charts folder, if so then create an
# array of all sub-folders inside this charts folder and
# recursively call retrieve_images on each of the sub-folders
if [ $dirname == 'charts ]
then
# Creating array of sub-folders in $basedir/$dirname
array=( "$basedir"/"$dirname"/* )
# Remove leading $basedir
array=( "${array[@]#$basedir/$dirname/}" )
# Recursively call retrieve_images on each sub-folder in the
# array
for i in "${array[@]}"
do
retrieve_images $basedir/$dirname ${array[i]}
done
# If passed dirname is not a charts folder, check if there's a
# charts folder inside of dirname. If there is, run retrieve_images
# with the charts folder
else
if [ -d $basedir/$dirname/charts ]
then
retrieve_images $basedir/$dirname charts
fi
fi
}
然后我只是呼叫了下面的函式,傳入 $basedir 作為我所在的當前目錄,$dirname 也是我當前目錄中的一個掌舵圖。
retrieve_images . ./A
我對 bash 腳本仍然很陌生,更不用說使用 bash 處理函式和遞回了。感謝您在指出任何錯誤或對我的腳本進行修復方面提供的任何幫助。
uj5u.com熱心網友回復:
很抱歉問,但這樣的事情不能解決你的問題嗎?
find /PATH_level_1 -name "*.yml" | xargs grep "image: *"
uj5u.com熱心網友回復:
更簡單的單個grep命令,可以遞回遍歷目錄。僅檢查匹配--include模式的檔案:
grep -r --include="*.yaml" "image: .*" /PATH_level_1
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/422211.html
標籤:
上一篇:按日期查找和復制特定檔案
