09와 11을 비교하는 방법

09와 11을 비교하는 방법

그래서 날짜 형식의 파일 이름 일부를 가져와 해당 숫자가 11보다 큰지 확인하는 코드가 있습니다. 모든 파일은 동일한 명명 원칙을 따르며 이름과 날짜만 다릅니다. -> 예:

Huistaak1-HelloWorld_Jonas.De Preter.s.ua_poging_2019-11-12 (참고: 이 파일 이름은 디렉터리입니다)

다음은 마지막 2개 숫자를 가져와 11과 비교하고 숫자가 더 큰 경우 디렉터리를 만드는 코드입니다.

for d in ./*/*/; do
  [[ ! -d "$d" ]] && continue
  char=${d: -3}
  (( ${char%/} > 11 )) &&
  mkdir -p "$d"late_inzending
done

내가 겪고 있는 문제는 날짜가 10보다 작을 때 09와 11을 비교한다는 것입니다. 이로 인해 오류가 발생합니다.

09 > 11 --> 'utf-8' 코덱은 위치 679의 바이트 0xc8을 디코딩할 수 없습니다: 잘못된 연속 바이트

답변1

sed를 사용하여 간단히 수정했습니다.

#the string which I'm working with:
#Huistaak1-HelloWorld_Jolien.Peters.s.ua_poging_2019-11-12

for d in ./*/*/; do
  char=${d: -3} #:Variable to get the last 2 numbers in this string(12/)
  x=${char%/} #:Variable to remove the invisible "/"
  y=$(echo $x | sed 's/^0*//')#:Incase there are leading zeros remove them
  echo $y
  (( "$y" > 11 )) && #Compare the numbers and if $y is bigger then make new directory
  mkdir -p "$d"late_inzending
done

관련 정보