abc_efg_2015_hanshake_01.csv.gz
abc_efg_2015_hanshake_02.csv.gz
abc_efg_2015_hanshake_03.csv.gz
버전 번호가 가장 높은 파일을 가져와서 배열에 저장하려면 어떻게 해야 합니까?
답변1
모든 파일 이름을 배열에 넣습니다. 관심 있는 파일 이름 집합을 정의하는 방법을 지정하지 않았습니다. 나는 그들이 공통 접두사와 접미사를 가지고 있다고 가정합니다. 모든 파일 이름으로 배열을 만듭니다.
all=(abc_efg_2015_hanshake_*.csv.gz)
모든 버전 번호의 길이가 같은 경우(번호 앞에 0이 있기 때문에 예제의 경우인 것 같음) 버전 번호가 가장 높은 파일이 배열의 마지막 요소입니다. 배열의 요소 수는 이고 ${#all[@]}
배열의 번호는 0부터 시작하므로 마지막 요소는 number 입니다 $((${#all[@]}-1))
.
highest=${all[$((${#all[@]}-1))]}
버전 번호의 길이가 다른 경우 sort
일반적으로 정렬하는 것이 가장 편리합니다. 파일 이름에 개행 문자가 없다고 가정합니다. 여기서는 파일 이름을 첫 번째 부분 이전 부분으로 분리하지만 .
첫 번째 부분 전 마지막 부분 이후만 분리합니다._
.
highest_version=$(printf '%s\n' abc_efg_2015_hanshake_*.csv.gz |
sed -e 's/\..*//' -e 's/.*_//' |
sort -n | tail -n1)
highest=abc_efg_2015_hanshake_${highest_version}.csv.gz