我有跨多個目錄的一組數據文件的格式與通過bash獲取某組文件中最高後綴(或前綴)的最簡潔方法?
ls lcp01/output/
> dst000.dat dst001.dat ... dst075.dat nn000.dat nn001.dat ... nn036.dat aa000.dat aa001.dat ... aa040.dat
也就是說,有通過lcp25
一組目錄lcp01
具有不同的數據文件在它們的輸出文件夾的集合。我想知道每個目錄中最高數字dstXXX.dat
文件是什麼(在示例中顯示結果將爲75
)。
我寫了一個腳本,用於實現這一功能,但我並不滿足於這感覺有點哈克的最後一步:
#!/bin/bash
for i in `seq -f "%02g" 1 25`; #specify dir extensions 1 through 25
do
echo " "
echo $i
names=($(ls lcp$i/output | grep dst)) #dir containing dst files
NUMS=()
for j in "${names[@]}";
do
temp="$(echo $j | tr -dc '0-9' && printf " ")" # record suffixes for each dst file
NUMS+=("$((10#$temp))") #force base 10 interpretation of dst suffixes
done
numList="$(echo "${NUMS[*]}" | sort -nr | head -n1)"
echo ${numList:(-3)} #print out the last 3 characters of the sorted list - the largest file suffix
done
最後兩個步驟組織輸出指數的列表,然後我展示該列表的最後3個字符將是我最大的文件編號(提供的文件編號小於100)。
有沒有更乾淨的方式做到這一點?理想情況下,我希望更多地控制輸出格式,但主要是讀取最後3個字符的步驟。我希望能夠輸出最大的數字,這應該是列表的最後一個元素,但我不知道如何。