我的目錄中有 N 個檔案,我希望能夠批量回圈它們,例如對于 2/3/4 個檔案,我想執行一個命令。我看到了類似的東西,但不幸的是找不到它。我將嘗試使用偽代碼解釋我想要什么,例如:
i=0
while i<N:
a=getFile(i)
b=getFile(i 1)
dosomething a
dosomething b
i =2
有沒有辦法在 Bash 中做到這一點?現在我正在使用正則運算式,但它一次獲取一個檔案(我使用*.ext是因為所有檔案都有一個擴展名,所以你可以在答案中遍歷目錄中的所有檔案,如果它更容易的話):
for j in *.ext; do
...
done
uj5u.com熱心網友回復:
這與大多數編程語言相同:在某處回圈和存盤專案,直到你有足夠的專案:
declare -i count=0
declare -a files=()
for f in *.ext; do
files[count]="$f"
(( count = 1 ))
if (( count == 2 )); then
dosomething "${files[0]}"
dosomething "${files[1]}"
count=0
fi
done
如果您想一次處理超過 2 個檔案的批次,我們還可以設計一些更通用的東西(調整 的值batch):
declare -i batch=3
declare -i count=0
declare -a files=()
for f in *.ext; do
files[count]="$f"
(( count = 1 ))
if (( count == batch )); then
for (( i=0; i<batch; i )); do
dosomething "${files[i]}"
done
count=0
fi
done
uj5u.com熱心網友回復:
您可以將引數收集到一個陣列中,然后以您喜歡的任何方式對其進行切片。
array=( *.ext )
for ((i=0; i<=${#array[@]}; i =2)); do
dosomething "${array[i]}" "${array[i 1]}"
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/422229.html
標籤:
